CakePHP 3 — заказ на данные не работает

Я использую CakePHP 3.x и пытаюсь отсортировать свои данные по содержавшимся данным, которые мне нужны, чтобы мой пагинатор мог сортировать по ним.

У меня есть следующие варианты для моего paginator:

public function getEventSignupsOptionsForPagination($id)
{
$options = array(
'limit' => 30,
'conditions' => array(
'event_id' => $id
),
'order' => array(
'signup_date' => 'asc'
),
'contain' => array(
'Users',
'Events.Instances.DkpLists.DkpListEntries.Users'
),
'sortWhitelist' => array(
'Users.username',
'Events.Instances.DkpLists.DkpListEntries.current',
'message',
'status',
'signup_date'
)
);

return $options;
}

Этот набор параметров возвращает правильные данные. Но когда я пытаюсь сортировать по нему, выдает ошибку.

Я использую следующую строку для сортировки на мой взгляд:

<?php echo $this->Paginator->sort('Events.Instances.DkpLists.DkpListEntries.current', 'DKP'); ?>

Это работает, пока я не нажму на него, а затем я получаю следующую ошибку:

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Events.Instances' in 'order clause'

Я не понимаю, почему это идет не так, потому что он может получить правильные данные, но не может сортировать по ним.

1

Решение

Пожалуйста, используйте как,

$ this-> Pages-> find (‘all’, [
‘содержать’ => [‘Rows’ => [
‘condition’ => [‘Rows.parent_id’ => 0],
‘queryBuilder’ => function ($ q) {
return $ q-> order ([‘order_number’ => ‘asc’]);
}
]]) -> ToArray ();

1

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

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