Это простое приложение для отслеживания хобби пользователей. У пользователя может быть много хобби, которые организованы в различные группы хобби.
Итак, у меня есть 4 связанных таблицы: пользователи , users_hobbies , хобби , hobby_groups .
users - это отношение «есть и принадлежит многим» к хобби через таблицу соединений users_hobbies.
хобби принадлежат группе хобби, группа хобби имеет много хобби
Имеет смысл, пока довольно просто.
В UsersHobbiesController у меня есть:
$paginate = [
'contain' => [
'Hobby' => [
'fields' => ['id', 'name'],
'HobbyGroup' => [
'fields' => ['id', 'name']
]
]
]
];
Кроме того, в моей функции index () я строю нумерацию страниц.
$usersHobbies = $this->paginate('UsersHobby');
$this->set(compact('usersHobbies));
Когда я получаю доступ к переменной $ usersHobbies в моем файле index.ctp View, он содержит данные, которые я хочу создать для выходной таблицы. Похоже:
array(
(int) 0 => array(
'UsersHobby' => array(...),
'Hobby' => array(
'id' => 'abc-def-ghi',
'name' => 'Jet Skiing',
'HobbyGroup' => array(
'id' => 'oiuy-trew-qldf',
'name' => 'Watersports'
)
)
)
....
)
Чтобы отсортировать выходную таблицу, я добавил несколько столбцов сортировки:
<th><?php echo $this->Paginator->sort('Hobby.name', 'Hobby'); ?></th>
<th><?php echo $this->Paginator->sort('Hobby.HobbyGroup.id', 'Hobby'); ?></th>
Первый заголовок работает для сортировки по имени Хобби. Но я не могу получить второй заголовок для сортировки для HobbyGroup. Есть ли простой способ сделать это?
Я искал несколько часов в StackOverflow, но не могу найти ответ, который мне подходит. Спасибо.