【发布时间】:2012-10-31 18:28:35
【问题描述】:
我有以下关联
后->主要->次要
$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
(
)
)
)
【问题讨论】:
-
你到底想完成什么?
-
我想限制结果返回。 cakephp 可包含的行为不这样做吗? book.cakephp.org/1.3/view/1323/Containable
-
然后查看 Dave 的答案。执行查询后,可包含用作限制/格式化结果数组的便捷工具。您正在寻找应用于查询执行的限制/联接。
-
@bbb: from bakery - “这种模型行为允许您过滤和限制模型查找操作。使用 Containable 将帮助您减少数据库不必要的磨损,提高速度和应用程序的整体性能。” 因此,它不会在运行查询后进行过滤,而是在数据库上运行所需的查询并过滤/格式化结果,从而减少数据库的负载。
标签: cakephp