5

我是 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)

有没有办法做到这一点?

4

2 回答 2

16

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

$this->T->id = $id;
$this->T->contain(array(...));
$this->T->read();
于 2011-06-02T07:15:44.927 回答
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'
            )
        )
    )
);
于 2011-06-01T19:12:47.027 回答