我是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)
有没有办法做到这一点?
答案 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'
)
)
)
);