Есть 2 таблицы - паттерны и действия, связанные между собой через промежуточную таблицу (многие-ко-многим). Мне нужно получить все действия какого-либо паттерна, в определенном порядке. Делаю я это через связи.
В модели паттерна я сделал так:
public function getPatternMoves()
{
return $this->hasMany(PatternMove::className(), ['pattern_id' => 'id'])
->orderBy('order_num ASC');
}
public function getMoves()
{
return $this->hasMany(Move::className(), ['id' => 'move_id'])
->via('patternMoves');
}
Как можно догадаться, колонка order_num, отвечающая за порядок вывода, находится в промежуточной таблице. А проблема в том, что сортировка не работает. На уровне запросов происходит следующее:
Здесь она есть:
SELECT * FROM `pattern_moves` WHERE `pattern_id`=1 ORDER BY `order_num`
А вот здесь уже теряется:
SELECT * FROM `moves` WHERE `id` IN (4, 2, 3)
Как можно это перебороть средствами ActiveRecord в Yii2? Или придется обойтись без связей?