2012-12-07 2 views
0

Cake와 그 포함 가능한 동작을 처음 사용했지만 예상대로 작동하지 않습니다 ... 또는 전혀.CakePHP containable behavior 발포하지 않음

제품에 대한 액세서리 목록을 얻으려고합니다. 제품 모델 HABTM 제품 (별칭 'ProductRelation'). 조인 테이블은 product_id 및 related_id라는 두 개의 제품 ID가있는 products_products입니다. 이에 반하여 주어진 product_id에 대한 액세서리 목록 (related_id 열에서 구동되는 제품)을 가져오고 싶습니다.

내 제품 모델에는 $ actsAs = array ('Containable');

내 컨트롤러에서는 조건 없이도 요리 책의 참조를 포함한 사용 가능한 빠른 테스트에 제품이 전혀 포함되지 않습니다. 때문에이에 대해 어떤 '조건'을 적용 나는 시도하지 않은 이미지, 콘텐츠 탭, 평가, 리뷰, 가격 등 -

debug($this->Product->find('all', array('contain' => 'ProductRelation'))); 

..

는 모든 관련 모델과 DB의 모든 제품의 배열을 반환 서면으로 전화로 제품에 데이터를 제한해야하며 요리 책에 따라 ProductRelation 데이터가 필요합니다.

팁이 있습니까?

+0

habtm 별칭 테이블을 사용한 적이 없지만 모델 배열을 포함하지 않아야합니까? 'contains'=> array ('ProductRelation')' –

+1

AppModel에이 코드가 있습니까 :'var $ actsAs = array ('Containable'); ' –

+1

@BarryChapman 그는 이렇게 말합니다. –

답변

2

당신은 재귀 적이라고 생각합니다. 다음을 사용하십시오 :

debug($this->Product->find('all', array(
    'contain' => 'ProductRelation', 
    'recursive' => -1 
))); 

을하는 당신을 위해 작동하는 경우, 당신은 AppModel 클래스에 containable을 추가하고 -1recursive 속성을 설정 시작합니다. 이렇게하면 요청한 결과 만 얻을 수 있습니다.

NB : 당신이 어떤 조건에서 ProductRelation을 사용할 수 있도록 케이크, HABTM 아니 join 않습니다.

+0

"Cake는 HABTM에 가입하지 않으므로 어떠한 조건에서도 ProductRelation을 사용할 수 없습니다." . 죽은, 감사합니다. 조인스 (Joins)와 이것들에 대한 조건을 가지고 주위에서 일했습니다. 나는 이것이 다른 게시물에서 옳은 것 같아요. – tremendusapps