我有以下的联想
发布->主要->次要
$results = $this->Post->find('all', array(
'conditions' => array(
'Post.post_id =' => 2,
'Primary.secondary_id !=' => null
),
'contain' => array(
'Primary' => array(
'Secondary' => array(
'conditions' => array('Secondary.short_code =' => 'code')
)
)
)
));返回此参数。
Array
(
[0] => Array
(
[Post] => Array
(
[id] => 2
[created] => 2012-10-29 09:48:29
[modified] => 2012-10-29 09:48:29
)
[Primary] => Array
(
[id] => 3
[secondary_id] => 6
[Secondary] => Array
(
[id] => 6
[short_code] => code
[created] => 2012-10-31 11:19:56
[modified] => 2012-10-31 11:20:03
)
)
)但是当我改变的时候
'conditions' => array('Secondary.short_code =' => 'code')至
'conditions' => array('Secondary.short_code !=' => 'code')当我不想返回主记录时,它仍然返回主记录。
Array
(
[0] => Array
(
[Post] => Array
(
[id] => 2
[created] => 2012-10-29 09:48:29
[modified] => 2012-10-29 09:48:29
)
[Primary] => Array
(
[id] => 3
[secondary_id] => 6
[Secondary] => Array
(
)
)
)发布于 2012-11-01 02:52:46
很难确切知道你希望实现什么,但我认为这听起来像是你试图根据条件限制“主要”结果,而不是“次要”模型。
如果是这样的话,您将需要使用joins()而不是contain()。
原因是:当您使用CakePHP's Containable Behavior时,它实际上执行单独的查询,然后在将数据返回给您之前合并结果。这样做在许多方面都很好,但它不允许您根据条件限制父结果与其子结果。
为此,只需使用joins()即可。(创建MySQL连接的CakePHP语法)
https://stackoverflow.com/questions/13165364
复制相似问题