2014-11-09 4 views
0

예를 들어 우리가 간단한 tv 쇼 데이터베이스를 가지고 있다고 상상해보십시오. 쇼 및 에피소드 모델로. 에피소드 belongsTo 하나의 쇼와 하나의 쇼 hasMany 에피소드.CakePHP : 컨트롤러의 연결 제한

에피소드/색인보기에서 우리는 모든 에피소드를 보여 주며 쇼/색인보기에도 동일하게 적용됩니다. 그러나 나는 또한 각 쇼 (제목 만)의 처음 5 개 에피소드를 말하게하는 것을 에코하고자합니다. hasMany 연관에 대한 limit 속성을 설정하여 에피소드를 단순히 제한 할 수 있습니다.

show/episode/x (id)보기 모든 에피소드를 표시하고 싶습니다. 따라서 view 의존적이기 때문에 hasMany 연관에 limit 속성을 단순히 사용할 수는 없습니다.

구현하기 위해 어떤 솔루션을 선택해야합니까? 나는 단지 "더러운 workarounds/hacks"를 사용하여 그것을 보관할 수 있었지만, 이것이 일반적인 문제인 것처럼 느껴졌고 실제 해결책이있을 수 있습니다.

답변

2

나는 당신이 찾고있는 것이 수용 가능한 행동이라고 믿습니다.

는 문서를 읽기 :

http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html

는 그런 다음 단체에 어떤 제한을 제거합니다. 아래에는 예제에서 포함 할 수있는 동작을 사용하는 방법이 나와 있습니다.

class Shows extends AppModel { 
    public $actsAs = array('Containable'); 
} 

class ShowsController extends AppController { 

    //Bring all the shows and 5 episodes 
    public function index(){ 
     $this->Show->find('all', array('contain' => array(
      'Episode' => array('limit' => 5) 
     ))); 
    } 

    public function view($id){ 
     //Bring the show 
     $this->Show->findById($id); 
     //Then bring the episodes of the show 
     $this->Show->Episode->findByShowId($id); 

     //Or you can use 
     $this->Show->find('all', array(
      'contain' => array('Episode')), 
      'conditions' => array('id' => $id) 
     ); 
    } 
} 
+0

정확히 내가 찾고있는 것이 었습니다. 감사. – Aurus

관련 문제