HABTM在条件下访问数组值

时间:2014-09-19 19:08:39

标签: arrays cakephp conditional-statements has-and-belongs-to-many findall

嘿我的问题是为HABTM模型定义一个条件

(int) 0 => array(
    'Article' => array(
        'id' => '',
        'title' => '',
        'body' => '',
        'created' => null,
        'modified' => null
    ),
    'Channel' => array(
        'id' => '',
        'channelname' => '',
        'created' => null,
        'modified' => null
    ),
    'Tag' => array(
        (int) 0 => array(
                'id' => '1',
                'value' => 'example',
        ),
        (int) 1 => array(
            [maximum depth reached]
        ),
        (int) 2 => array(
            [maximum depth reached]
        )
    ),
),

我想定义一个条件,在Tag值中搜索特定的值......就像那样:

 $this -> Article -> find('all', array('conditions' => array('Tag.0.value' => 'test'))

那么有人知道如何在这种情况下“预测”该阵列吗?谢谢(:

1 个答案:

答案 0 :(得分:0)

您需要:

  1. 从另一个方向运行您的查找(使用CakePHP非常好的可包含行为来获取文章):

    $ this-> Tag-> find(' all',array(     '条件' =>阵列(         ' Tag.value' => '测试'     )     '含有' =>阵列(         '文章'     ) ));

  2. 或者,使用JOIN。像你一样运行你的发现,但是对标签值=' test'

  3. 的标签进行内部联接

    您无法根据相关模型的条件限制主要模型的结果。原因是,当你依赖递归或使用Contain时,CakePHP实际上会创建单独的查询来引入你的不同模型。数据。因此,一个查询中的条件不会影响另一个查询。


    查看类似的问题/答案:

    How do I restrict query results based on sub-results in CakePHP?

    Conditions in JOINed tables shows error CakePHP

    cakephp contain filtering by parent model value

    cakephp contain association conditions issue

    Adding conditions to Containable in CakePHP