Получите все отношения принадлежности к плюс HABTM в CakeStack Overflow

Я пытаюсь получить только один 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
)
);

Но это не сработало. Есть ли способ достичь этого, не называя все таблицы, чтобы сделать его более простым в обслуживании?

1

Решение

Хорошо, так как кажется, что нет никакого решения для этого, мне удалось сделать это, получив соответствующие модели типа belongsTo и затем добавление имени модели отношения HABTM:

$associations = $this->Ticket->getAssociated('belongsTo');
$associations[] = 'Tag';

//getting the filtered tickets
$this->paginate = array(
'limit' => 20,
'contain' => $associations
);
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector