Я пытаюсь получить только один HABTM
отношения при использовании paginate
используя CakePHP 2.3.
Прямо сейчас я получаю этот результат:
Array
(
[0] => Array
(
[Ticket] => Array ( .....)
[User] => Array ( .....)
[Priority] => Array ( .....)
[Status] => Array(....)
[Attachment] => Array(....)
....
)
[1] => ....
[2] => ....
)
Используя:
$this->Ticket->recursive = 0;
$this->paginate = array(
'limit' => 20
);
я использую $this->Ticket->recursive = 0;
потому что меня интересует только belongsTo
отношения с другими таблицами, но в то же время я хотел бы получить только один из HABTM
отношения.
Я знаю, что мог бы добиться этого, добавив каждое из отдельных отношений в contain
массив, вот так:
$this->Ticket->recursive = 0;
$this->paginate = array(
'limit' => 20,
'contain' => array(
'Ticket`, `User`, `Priority`, `Status`, `Attachment`, `Tags`...
)
);
Но у меня есть много таблиц, и мне было интересно, есть ли способ сделать это без необходимости называть каждую таблицу в contain
массив.
Я также пытался использовать recursive
массив внутри contains
один так:
//getting the filtered tickets
$this->paginate = array(
'limit' => 20,
'contain' => array(
'Ticket' => array('recursive' => 1),
'Tag' //this is the hasMany relationship
)
);
Но это не сработало. Есть ли способ достичь этого, не называя все таблицы, чтобы сделать его более простым в обслуживании?
Хорошо, так как кажется, что нет никакого решения для этого, мне удалось сделать это, получив соответствующие модели типа belongsTo
и затем добавление имени модели отношения HABTM:
$associations = $this->Ticket->getAssociated('belongsTo');
$associations[] = 'Tag';
//getting the filtered tickets
$this->paginate = array(
'limit' => 20,
'contain' => $associations
);
Других решений пока нет …