我有下列协会
后>伯 - >次级
$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')
)
)
)
));
Run Code Online (Sandbox Code Playgroud)
返回此.
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
)
)
)
Run Code Online (Sandbox Code Playgroud)
但是,当我改变
'conditions' => array('Secondary.short_code =' => 'code')
Run Code Online (Sandbox Code Playgroud)
至
'conditions' => array('Secondary.short_code !=' => 'code')
Run Code Online (Sandbox Code Playgroud)
它仍然返回主记录,当我不想要它时.
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
(
)
)
)
Run Code Online (Sandbox Code Playgroud)
很难确切地知道你希望实现什么,但我认为这听起来像是你试图根据"辅助"模型的条件来限制"主要"结果.
如果是这种情况,您将需要使用joins()而不是contain().
原因是:当您使用CakePHP的Containable Behavior时,它实际上会执行单独的查询,然后在将数据返回给您之前合并结果.这样做在很多方面都很棒,但是它不允许你根据对孩子的条件来限制父结果.
要做到这一点,只需使用连接().(创建MySQL JOIN的CakePHP语法)
| 归档时间: |
|
| 查看次数: |
2170 次 |
| 最近记录: |