Выберите конкретное поле вложенного массива HABTM - PullRequest
1 голос
/ 10 февраля 2011

У меня есть таблица билетов и таблица контактов.Билет может иметь много контактов.

Я разбиваю таблицу на тикеты и хочу, чтобы она выбрала определенные поля, включая первый связанный контакт из вложенного массива.Неважно, что я пытаюсь, я не могу понять это (или если это вообще возможно).

Мой код:

$this->paginate = array(<br>
    'conditions' => array('status_id !=' => '3'),<br>
    'limit'=>50,<br>
    'fields'=>array('Ticket.title', 'Ticket.ticket_number', 'Priority.name', 'Status.name', 'Contact.0.full_name')  <br>            
);

(The Contact.0.full_nameприводит к сбою. Как я могу заставить эту работу?)

Так что я могу использовать этот столбец с $this->Paginator->sort.

1 Ответ

0 голосов
/ 11 февраля 2011

Вы не можете вызывать такие столбцы Contact.0.full_name CakePHP так не работает. Допустимое имя поля: TableAlias.column_name

Вы не можете использовать дочерние элементы hasMany в операции сортировки.

Для достижения аналогичной функциональности, вы можете сбросить hasMany и добавить hasOne для достижения желаемого результата. Потому что нет изменений схемы в обоих типах отношений.

$this->Ticket->unbindModel(array('hasMany' => array('Contact')));
$this->Ticket->bindModel(array('hasOne' => array('Contact')));
$this->paginate = array(
    'conditions' => array('status_id !=' => '3'),
    'limit'=>50,
    'fields'=>array('Ticket.title', 'Ticket.ticket_number', 'Priority.name',  'Status.name', 'Contact.full_name')
);

Теперь вы можете использовать этот столбец Contact.full_name для сортировки.

...