2013-08-27 3 views
0

나는 자체 참조 테이블 따라서 정의 가지고있다 - 우리는 부모 아이의 일 개 수준이CakePHP의 자기 참조 테이블

public $hasMany = array(
    'ChildCategory' => array(
     'className' => 'Category', 
     'foreignKey' => 'parent_category_id', 
     'dependent' => false, 
     'conditions' => '', 
     'fields' => '', 
     'order' => '', 
     'limit' => '', 
     'offset' => '', 
     'exclusive' => '', 
     'finderQuery' => '', 
     'counterQuery' => '' 
    ) 
); 

public $belongsTo = array(
    'ParentCategory' => array(
     'className' => 'Category', 
     'foreignKey' => 'parent_category_id', 
     'conditions' => array('ParentCategory.parent_category_id' => '0'), 
     'fields' => '', 
     'order' => '' 
    ) 
); 

그래서 나무에 alittle OTT입니다. 나는 추가 편집 기능을 위해서만 부모리스트를 찾기 위해 코드를 작성하려고한다.

$parentCategories = $this->Category->ParentCategory->find('list'); 

그러나 SQL에 내 조건이 포함되어 있지 않습니다. ???

SELECT ParentCategory. id, ParentCategory. name부터 bidup. categories AS ParentCategory WHERE 1 = 1

조건이 포함되지 않은 이유가 있습니까?

+0

I 모델 관계에 조건에 너무 익숙한 아니에요을하지만, 조인에만 적용될 수 있습니다. '$ parentCategories = $ this-> Category-> ParentCategory-> find ('list', 'conditions'=> array ('parent_category_id'=> 0));를 사용하면 원하는 것을 얻을 수 있습니다. – Kai

답변

0

$belongsTo 관계의 조건은 범주에 대한 쿼리에서 ParentCategory를 검색 할 때만 적용됩니다 (표시 한 관계가 범주 모델에있는 것으로 가정). 당신이 범주에 find()를하고 포함 ParentCategory을 어느 recursive 또는 contain 매개 변수를 통해, 아니면 그 조건이 사용되는 read()를 사용한 경우

이것은 의미한다.

모델에서 조건이 무시 된 ParentCategory에서 직접 쿼리 할 때 직접로드하지 않고 해당 모델로 바로 이동하거나 바로 $uses에 입력하지 않고 바로 그 관계를 사용하고 있습니다. 특별히 ParentCategory에 목록을 사용하려면 user2076809 제안으로

는, 당신의 최선의 선택은 조건에 자신을 포함 할 가능성이 높습니다 :

$parentCategories = $this->Category->ParentCategory->find(
    'list', 
    array(
    'conditions' => array('ParentCategory.parent_category_id' => 0), 
) 
);