我有3个表格:sp_pages
,sp_messages
和sp_messages_pages
(用于多对多关系)。 的sp_messages_pages
表有5列:Yii2。如何根据联结表中的属性对结果进行排序?
- ID
- PAGE_ID
- MESSAGE_ID
- 启用
- sorting_order
我想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