여러 모델에서 조건부 진술 구축 (CakePHP 1.2.5)
문제
사용자, 지역, 국가의 3 가지 모델이 있다고 가정 해 봅시다.
User belongsTo Region
Region belongsTo Country
이러한 모델 각각은 포함 가능한 동작을 사용하고 있습니다. 코드 'US'로 국가에서 사용자를 찾으려고 노력하고 있습니다. 내가 시도하는 것은 다음과 같습니다.
$users = $this->User->find('all', array(
'conditions' => array('Country.code' => 'US'),
'contain' => array('Region.Country'),
));
CakePHP는 이것을 2 개의 쿼리로 분리합니다.
- 첫째, 코드 'US'가있는 모든 국가의 ID를 선택하고 있습니다.
- 그런 다음 해당 ID를 사용하여 모든 사용자가 참여하는 지역에 가입하는 모든 사용자를 선택합니다.
region.country_id
이전에 검색된 국가 ID 목록에 있습니다.
결과적으로, 나는 내 앱에서 SQL 오류로 끝납니다. conditions
배열에는 Country.code에 대한 참조가 포함되어 있으며 케이크 건설이 제작 한 두 번째 쿼리는 국가에 가입하지 않습니다.
내가 보는 가장 좋은 케이크 솔루션은 복잡한 찾기 조건 매뉴얼의 일부. 그러나 이것은 매우 복잡한 것처럼 보이며, 내가 구현하고 싶은 것보다 더 많은 해킹입니다. 내가 간과하는 쉬운 방법이 있습니까?
해결책
Nate Abele (Cakephp의 이전 리드 데브)은 행동에 관한 기사를 썼습니다. 임시 조인 도움이 될 수 있습니다.
다른 팁
뒷면에 조건을 넣으십시오. 예 :
$users = $this->User->find('all', array('contain' => array(
'Region' => array(
'Country' => array(
'conditions' => array('Country.code' => 'US'),
),
),
)));
두 번째로 나오는 예를 참조하십시오 포함 가능한 매뉴얼
제휴하지 않습니다 StackOverflow