2011-08-24 2 views
2

var $ hasMany = array ("Comment");를 정의한 블로그 모델이 있습니다.CakePHP : hasMany가있는 조건

특정 댓글 카테고리와 일치하는 블로그 항목 만 선택하려면 댓글에 필터를 적용하려면 어떻게해야합니까?

블로그 모델에서, 내가

$this->recursive=2; 
$this->hasMany=array("Comment"); //in Comment i have $belongsTo("Blog") 
return $this->find("all",array("conditions"=>array("Comment.comment_type_id"=>123))); 

를 수행하면 난 케이크가 가입하지 않기 때문에 알 수없는 Comment.comment_type_id 열을 말한다 오류가 발생합니다.

나는 내가 해결하기 위해 간단하게 생각하지만 난 좋은 방법 당신은 반대로 작동 특정 카테고리의 모든 주석을 선택할 수

답변

2

을 찾아 블로그 게시물을 포함하지 수 있도록이 오히려 일반적인 문제입니다 생각 그들은에 게시되었습니다. 지금은 찾을 수 없지만 문서에서 "권장 된"방법으로 본 것이므로이 간단한 경우에 완벽하게 충분할 것입니다. 확실히 내가 먼저 시도 할 것입니다.

또한 포함 할 수있는 동작을 사용하고 Comment을 포함하는 조건을 설정할 수 있지만 모든 블로그 게시물을 반환하고 댓글 카테고리가 내가 본 것과 일치하지 않는 댓글이 없습니다. 저는이 솔루션이 마음에 들지 않고 정확하지 않기 때문에 (기술적으로는 그렇지 않지만) 결코이 솔루션을 좋아하지 않았습니다.

실제로 제한하고 싶은 경우에는 ad hoc joins을 자주 사용합니다. 나는 좀더 자세한 배열을 위해 find 배열을 만들더라도 가능한 한 내 결과를 깨끗하게 유지하는 것을 좋아한다.

8
$this->bindModel(array(
    'hasMany' => array(
     'Comment' => array(
      'conditions' => array('Comment.comment_type_id' => 123) 
     )))); 
$this->find('all'); 

또는 모델은 이미 코멘트를 이용하여 바인더 제본 경우 :

$this->hasMany['Comment']['conditions'] = array('Comment.comment_type_id' => 123); 
$this->find('all');