2010-07-07 9 views
1

내 프로젝트에 심각한 교착 상태가 있습니다. 나는 며칠 동안 해결책을 찾고 있지만 아무것도 없습니다.Cakephp에서 둘 이상의 SQL 쿼리에 컨트롤러 하나를 사용하는 방법은 무엇입니까?

내 인덱스 페이지에는 4 가지 다른 mysql 쿼리가 있습니다. 나는 처음에 1 개의 컨트롤러와 1 개의 뷰 내부에서 이것을 코딩하려고 시도했다. 올바른 방법이 아니 었습니다. 그런 다음 누군가가 requestAction() 함수와 함께 4 개의 요소를 사용하도록 제안했습니다. 처음에는 아주 좋았습니다. 그런 다음 명령 사이에 mysql이 필요합니다. requestAction()과 함께 사용할 수있는 방법을 찾지 못했습니다. Cakephp 그룹에 대한 나의 질문은 여전히 ​​답이 없습니다. 누군가 컨트롤러에서 동작을 사용하도록 제안했습니다. 하지만 컨트롤러를 만드는 방법을 알 수는 없었습니다.

알고 계시는 정보를 알려주세요. 사전에 감사합니다, 여기에

내 현재 포스트 컨트롤러의 인덱스 기능은 다음과 같습니다

function index() { 
     $posts = $this->paginate(); 
     if (isset($this->params['requested'])) { 
      return $posts; 
     } else { 
      $sql = array('conditions' => array('id BETWEEN ? AND ?' => array(286, 291))); 
      $this->Post->find('all', $sql); 
      $this->set('posts', $posts); 
     } 
} 

어떻게해야합니까? 나머지 3 액션에 대해 새 컨트롤러를 추가해야합니까? 또는 index() 함수 내부에서해야합니까?

+0

어떤 상황에서 어떤 종류의 쿼리가 필요한지, 그리고 이러한 쿼리를 사용할 위치를 알려주십시오. – deceze

+0

코스. 고맙습니다. 내 프로젝트는 다음과 같습니다. http://bake.yemeklog.com/ 3 열을 넣고 싶습니다. lates 포스트 용입니다. 지난 10 일 최고 등급 1 위 지난 30 일 최고 등급 1 위 마지막 게시물을 코딩하고 모든 요소를 ​​통해 항상 최고 평점을 부여하는 것이 좋습니다. 하지만 명령 사이에 mysql이 필요할 때 모든 것이 멈추게됩니다. 명백합니까? – Kemal

+0

귀하의 의견은이 블로그 게시물을 생각 나게합니다 : http://teknoid.wordpress.com/2008/12/16/how-to-build-a-dashboard-for-your-application-in-cakephp/ – deizel

답변

1

때마다 나는이 방법을 수행 단일 컨트롤러에서 여러 쿼리를 필요 : 위의 예제는 그 좋은되지 않도록

// model Foo 
function edit($id){ 
    $this->data = $this->Foo->read(null, $id); 
    $second = $this->Foo->Foo2->find('list'); 
    $third = $this->Foo->Foo3->find('list'); 
    $this->set(compact('second', 'third')); 
} 

내 생각을, 당신은 그 3 열에 쪽수를 매기다 싶어요.

귀하의 방법에 오류가 있다고 생각합니다. $posts은 (는) find과 (와) 관련이 없습니다. $posts = $this->Post->find('all', $sql);이 있어야합니다. 그러나 이렇게하면 결과에 페이지 매기기를 할 수 없습니다. 설명서에 Custom Query Pagination을보십시오. 아마도 이것은 당신에게 도움이 될 것입니다 :

function index(){ 
    if(!isset($this->params['requested'])) { 
     $this->paginate = array('Post' => array(
      'conditions' => array('id BETWEEN ? AND ?' => array(286, 291)) 
     )); 
    } 
    $this->set('posts', $this->paginate()); 
} 
관련 문제