CakePHP - возможно ли использовать контейнерное поведение с методом read ()? - PullRequest
5 голосов
/ 01 июня 2011

Я новичок в CakePHP и не могу понять, как вызвать метод read () класса модели с поведением Containable.С помощью 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, чтобы я могпередать его в представление «вид».но массив, переданный для поиска, не работает при

$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 ]

16 голосов
/ 02 июня 2011

Вы также можете установить до вызова read ():

$this->T->id = $id;
$this->T->contain(array(...));
$this->T->read();
3 голосов
/ 01 июня 2011

Полагаю, вы можете установить поведение так, чтобы оно относилось к 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'
            )
        )
    )
);
...