Сортировка связанных по промежуточной таблице

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
devalex
Сообщения: 2
Зарегистрирован: 2016.03.02, 11:05
Откуда: Воронеж
Контактная информация:

Re: Сортировка связанных по промежуточной таблице

Сообщение devalex »

Код: Выделить всё

public function getGoods()
{
        return $this->hasMany(Good::className(), ['id' => 'good_id'])
            ->viaTable('good_class', ['good_class' => 'id'])
            ->innerJoin('good_class gc', 'gc.good_id = good.id ')
            ->orderBy(['gc.order' => SORT_ASC]);
}
так тоже работает

lexa2201
Сообщения: 6
Зарегистрирован: 2016.06.10, 16:01

Re: Сортировка связанных по промежуточной таблице

Сообщение lexa2201 »

Вот таким образом это у меня происходит:

Таблица - Фильм (movie)
Таблица - Жанр (genre)
Связная таблица movie_genre^
movieID
genreID
ord

Связи остаются как есть после генерации через gii.

Вот таки образом получаю данные с сортировкой (модель в данном случае - это сущность Фильм)

Код: Выделить всё

$genres = new \yii\data\ActiveDataProvider(['query' => $model->getMovieGenres()->with('genre')->orderBy('ord'), 'sort' => false,]); 

Дебагер никаких лишних запросов не показывает, все как и должно быть при таком подходе, когда он выдергивает ключи для IN, только подставляет туда ORDER BY

Код: Выделить всё

SELECT * FROM `movie_genre` WHERE `movieID`=1 ORDER BY `ord` LIMIT 20
Соответственно это провайдер загоняем уже в грид.

Как-то так.

Ответить