CakePHP - 是否可以使用read()方法使用Containable行为?

时间:2011-06-01 18:53:18

标签: cakephp cakephp-1.3 containable

我是CakePHP的新手,无法弄清楚如何使用Containable行为调用模型类的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的实例,所以我可以将它传递给'view'视图。但是传递给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)

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:16)

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

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

答案 1 :(得分:3)

我相信您可以设置行为,使其适用于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'
            )
        )
    )
);