Это простое приложение для отслеживания увлечений пользователей. У пользователя может быть много увлечений, которые объединены в разные группы увлечений.
Итак, у меня есть 4 связанные таблицы: users, users_hobbies, 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, в нем есть данные, которые мне нужны для построения выходной таблицы. Это выглядит как:
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, но не могу найти ответ, который мне подходит. Спасибо.