@akula22

Как сделать orderBy из 2 таблиц используя AR with?

Есть 2 таблицы, paper и paper_category
в обеих есть поле position по которому мне надо их отсортировать.
Вывести надо так
CATEGORY1
-paper1
-paper2
CATEGORY2
-paper5
-paper8
Делаю так
$array = Paper::find()->select(['id', 'title', 'cat_id', 'position'])->asArray()
            ->with(['category' => function($query) {
                $query->orderBy(['paper_category.position' => SORT_DESC]);
            }])
            ->orderBy(['paper.position' => SORT_DESC])
            ->all();
        return ArrayHelper::map($array, 'id', 'title', 'category.title');

По бумаге сортирует, по категориям нет.
  • Вопрос задан
  • 33 просмотра
Пригласить эксперта
Ответы на вопрос 2
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Вы видимо путаете with и joinWith. Вы послали 2 запроса. 1 забрал Paper, второй дернул связи category, при чем 1 запросом, для всех Paper. Посмотрите в логах sql, которые получили и все станет ясно.
Ответ написан
@akula22 Автор вопроса
UP
понадобилось добавить еще одно поле для вывода
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы