我正在使用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')
我試了一下:
$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';
我產生這種情況陣:
[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
)
)
)
)
但是,當我搜索使用這個條件下,返回我空結果數組,但我知道在db中有一些符合這些條件的。
那麼,這裏有什麼問題?我該怎麼辦 ?請幫幫我。
謝謝。
順便說一句,我發現了一個很好的SQL解決方案。 http://stackoverflow.com/questions/3267609/mysql-join-query-for-multiple-tags-many-to-many-relationship-that-matches-al – cleverketchup