Как заказать данные только один раз для всех контроллеров?

Я пишу очень простое приложение на CakePHP 3 (3.0.13) и хотел бы знать, могу ли я сделать что-то простое и лучшее.

По сути, я пишу средство отслеживания проблем, чтобы быть в курсе проблем и заданий. У меня есть таблица приоритетов, содержащая уникальный идентификатор и имя для каждого уровня, скажем, низкий, средний и высокий. Моя проблема в том, что, хотя я добавил их в базу данных в том порядке, в котором я хотел бы, чтобы они отображались, они появляются в алфавитном порядке, поэтому высокий, низкий, средний.

В моей функции добавления контроллера задач (например) я могу изменить следующее:

$priorities = $this->Issues->Priorities->find('list');

...to:

$priorities = $this->Issues->Priorities->find('list', ['order' => 'Priorities.id ASC']);

... но я не хочу делать это везде, где хочу использовать список приоритетов.

Я предполагаю, что существует СУХОЙ способ указать это (в модели?), Который эффективно устанавливает значение по умолчанию для использования везде, но если и есть, я не могу его найти.


person Vaughany    schedule 10.09.2015    source источник


Ответы (1)


Вы можете перезаписать Table::findList() в своем классе PrioritiesTable и добавить условия заказа в запрос, например

public function findList(Query $query, array $options)
{
    $query = parent::findList($query, $options);
    return $query->order(['Priorities.id' => 'ASC']);
}

Смотрите также

person ndm    schedule 10.09.2015