/
v.bolshakov
/
AIEcosystem-Testing
Обзор
Документация
Войти
/
v.bolshakov
/
AIEcosystem-Testing
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
common/traits/TitleQueryTrait.php
64 строки
2 KB
Developer
Initial commit
03 авг 2026, 17:43
03 авг 2026, 17:43
7433917
Код
Авторство
О чём код?
<?php namespace common\traits; use common\models\base\BaseModel; /** * Трейт для добавления данных для вывода в списках * * @package common\traits * * @author Dmitry E. Semenov <sde.tomsk@gmail.com> * @copyright Self (c) 2020 */ trait TitleQueryTrait { /** * Формирование специфичной сортировки * * @param BaseModel $object * @return $this */ public function getOrderBy($object) { if (!$object) { throw new \InvalidArgumentException('Необходимо использовать для загруженного объекта'); } $this->alias($this->alias); if ($object->hasAttribute('order_number')) { return $this->orderBy([$this->alias . '.order_number' => SORT_ASC]); } else { foreach ($object->getTitleFields() as $field) { $this->addOrderBy([$this->alias . '.' . $field => SORT_ASC]); } return $this; } } /** * Расширенная сортировка * * @param string[] $title_fields * @return $this */ public function prepareOrder($title_fields = ['title']) { $a = $this->alias; $this ->alias($a) ->orderBy([ 'if(' . $a . '.id = -1, 0, 1)' => SORT_ASC, ]); foreach ($title_fields as $field) { $this->addOrderBy([$a . '.' . $field => SORT_ASC]); } return $this; } }