首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cakephp包含关联条件问题

问cakephp包含关联条件问题
EN

Stack Overflow用户
提问于 2012-11-01 02:28:35
回答 1查看 2.2K关注 0票数 2

我有以下的联想

发布->主要->次要

代码语言:javascript
复制
$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')
            )
        )
    )
));

返回此参数。

代码语言:javascript
复制
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
                        )

                )

        )

但是当我改变的时候

代码语言:javascript
复制
'conditions' => array('Secondary.short_code =' => 'code')

至

代码语言:javascript
复制
'conditions' => array('Secondary.short_code !=' => 'code')

当我不想返回主记录时,它仍然返回主记录。

代码语言:javascript
复制
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
                        (
                        )

                )

        )
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-01 02:52:46

很难确切知道你希望实现什么,但我认为这听起来像是你试图根据条件限制“主要”结果,而不是“次要”模型。

如果是这样的话,您将需要使用joins()而不是contain()。

原因是:当您使用CakePHP's Containable Behavior时,它实际上执行单独的查询,然后在将数据返回给您之前合并结果。这样做在许多方面都很好,但它不允许您根据条件限制父结果与其子结果。

为此,只需使用joins()即可。(创建MySQL连接的CakePHP语法)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13165364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档