@criminalist

Как осуществить сортировку по связанным полям в YII2?

Здравствуйте, RESTAPI не получается, точней вообще не понятно как сделать сортировку по связанным полям, например:
Есть у нас model.php в нем

public function fields()
    {

        $fields = [
            'id',
            'divisionName' =>  function () {
                $divisionName = Division::findOne($this->divisionId);
                return isset($divisionName->fullName) ? $divisionName->fullName : null;
            },

Поля divisionName - не существует в текущей модели, мы его берем из другой таблицы, но нам требуется по умолчанию сортировку в текущей модели по этому полю
ASC или DESC не важно, главное чтобы сортировка отрабатывал и выводила в JSON.
Саму сортировку делаем в контроллере
'prepareDataProvider' => function ($actions) {
                    $model = new $this->modelClass();
                    $query = $model::find()->where(['dateComplete' => NULL]);
                    $query->orderBy([
                        'divisionName'  => SORT_ASC,
                       'objectName' => SORT_ASC
                    ]);

В итоге получаем логичный ответ:
[Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Invalid column name 'divisionName'.\nThe SQL being executed was: SELECT * FROM [PRECEPT] WHERE [dateComplete] IS NULL ORDER BY [divisionName], [objectName]",
  • Вопрос задан
  • 196 просмотров
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
$query->orderBy([
     '{{%table_name}}.name'  => SORT_ASC,
     'objectName' => SORT_ASC
]);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы