У меня есть 3 стола: sp_pages
, sp_messages
и sp_messages_pages
(для отношений «многие ко многим»). sp_messages_pages
таблица имеет 5 колонок:Yii2. Как сортировать результаты по атрибутам в таблице соединений?
- идентификаторов
- page_id
- message_id
- включен
- порядок_сортировки
Я хочу, чтобы все сообщения для конкретной сортировки страницы по sp_messages_pages.sorting_order
с помощью Yii2.
Я пытаюсь этот код в pages
классе:
public function getMessages() {
return $this->hasMany(Messages::className(), ['id' => 'id_messages'])
->viaTable('sp_messages_pages', ['id_pages' => 'id'], function ($query) {
$query->andWhere(['enabled' => 'Yes'])
->orderBy(['sp_messages_pages.sorting' => SORT_ASC]);
});
}
Я использую этот код в мой контроллер:
$this->findModel(['slug' => $slug])->getMessages();
Это дает мне все сообщения, отсортированные по sp_message.id
. Сгенерированный SQL является
SELECT * FROM
sp_messages
WHEREid
IN ('2', '3', '1', '4', '5')
IN
состояние сортируется, как я хочу, но как сортировать sp_messages
?
проверьте это http://stackoverflow.com/questions/38355984/yii2-order-items-of-many-to-many-relation/38367858 в той же теме – oakymax