【问题标题】:CakePHP - Is it possible to use Containable behaviour with the read() method?CakePHP - 是否可以通过 read() 方法使用 Containable 行为?
【发布时间】:2011-09-06 13:35:09
【问题描述】:

我是 CakePHP 的新手,不知道如何调用具有可包含行为的模型类的 read() 方法。我可以用 find() 做以下事情

$this->T->find('all', array (
    'contain' => array (
        'C', 
        'L' => array (
            'fields' => array ('L.id, L.time'),
            'I' => array (
                'fields' => array ('I.id','I.time'),
                'J.name',
                'J.id'
            )
        )
    )
);

这正如我预期的那样工作,但我不想获取 T 的所有实例,而是获取 id = $id 的实例,以便我可以将它传递给“视图”视图。但是传递给 find 的数组在执行时不起作用

$this->T->read(
array (
        'contain' => array (
            'C', 
            'L' => array (
                'fields' => array ('L.id, L.time'),
                'I' => array (
                    'fields' => array ('I.id','I.time'),
                    'J.name',
                    'J.id'
                )
            )
        )
, $id)

有没有办法做到这一点?

【问题讨论】:

    标签: cakephp cakephp-1.3 containable


    【解决方案1】:

    您也可以在 read() 调用之前设置:

    $this->T->id = $id;
    $this->T->contain(array(...));
    $this->T->read();
    

    【讨论】:

    • 由于 find 没有设置 Model->data 变量,使用 find(first) 和 read() 的效果是不一样的。如果他想要的只是将数据移到视图中,那么 find(first) 解决方案很好,但就像 Dunhamzzz 所说的那样 - 问题要么需要更正以明确/与答案的关系,要么答案是错误的。如果 I 真的需要使用可包含与 model::read 和 find(first) 不是一个好的解决方案,那么这将是一个毫无价值的搜索结果。
    • 套用我上面的评论 - 正如作者所说,这个答案是问题的正确答案
    • 是的,我想要的只是将数据移动到视图中。对不起,我没有正确表达这个问题。现在已经修好了,谢谢,Carlos
    【解决方案2】:

    我相信您可以设置行为以使其适用于read(),但如果您只需要数据,您也可以使用find( 'first' )

    $this->T->find( 'first', array (
        'conditions' => array(
            'T.id' => $id
        ),
        'contain' => array (
            'C', 
            'L' => array (
                'fields' => array ('L.id, L.time'),
                'I' => array (
                    'fields' => array ('I.id','I.time'),
                    'J.name',
                    'J.id'
                )
            )
        )
    );
    

    【讨论】:

    • 我很困惑你为什么接受这个,问题是“..使用 read() 方法的可包含行为” - 这不是使用 read() 方法。
    • @Gustavo:重新表述问题以解释您只需要数据,而不是专门来自 model::read 调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多