CakePHP 2.3.6을 사용하고 있습니다. 프로젝트에서 일부 데이터를 검색하기 위해 hasMany 연관에 JOIN 쿼리를 사용하고 있습니다. 내 조건은 다음과 같아야합니다JOIN 쿼리, hasMany 연결에 조건 생성하기
User.gender='male' AND User.country='USA'
AND
(Education.level='under_graduate' AND Education.result >= 3.5 AND Education.institute='college 1')
AND
(Education.level='graduate' AND Education.result >= 3 AND Education.institute='college 2')
내가 뭘하려 :
[User] => Array
(
[conditions] => Array
(
[AND] => Array
(
[User.gender] => male
[User.country] => USA
[0] => Array
(
[AND] => Array
(
[Education.result >= ] => 3.5
[Education.level] => under_graduate
[Education.institute] => college 1
)
)
[1] => Array
(
[AND] => Array
(
[Education.result >= ] => 3
[Education.level] => graduate
[Education.institute] => college 2
)
)
)
)
[joins] => Array
(
[0] => Array
(
[table] => educations
[alias] => Education
[type] => INNER
[conditions] => Array
(
[0] => Education.user_id=User.id
)
)
)
)
그러나, 나는이 조건을 사용하여 검색 할 때, 그것은 나에게 빈을 반환 :이 조건 배열을 생성
$this->paginate['User']['conditions']['AND']['User.gender']='male';
$this->paginate['User']['conditions']['AND']['User.country']='USA';
$this->paginate['User']['joins'][]=array('table'=>'educations','alias'=>'Education','type'=>'INNER','conditions'=>array('Education.user_id=User.id'));
$this->paginate['User']['conditions']['AND'][0]['AND']['Education.result >= ']=3.5;
$this->paginate['User']['conditions']['AND'][0]['AND']['Education.level']='under_graduate';
$this->paginate['User']['conditions']['AND'][0]['AND']['Education.institute']='college 1';
$this->paginate['User']['conditions']['AND'][1]['AND']['Education.result >= ']=3;
$this->paginate['User']['conditions']['AND'][1]['AND']['Education.level']='graduate';
$this->paginate['User']['conditions']['AND'][1]['AND']['Education.institute']='college 2';
결과 배열,하지만 이러한 조건을 충족하는 db 일부 알고 있습니다.
그래서 여기에 무슨 문제가 있습니까? 어떻게해야합니까? 도와주세요.
감사합니다.
btw, 나는 SQL에서 좋은 해결책을 찾았습니다. http://stackoverflow.com/questions/3267609/mysql-join-query-for-multiple-tags-many-to-many-relationship-that-matches-al – cleverketchup