我有2個表(滑塊,圖像)有關聯(sliders_images)表,關係工作正常,但我nedd以特定的順序獲取相關數據,定義的屬性正確的順序是在結合表,該關係被定義爲:Yii2訂單項的多對多關係
public function getImages(){
return $this->hasMany(Images::className(), ['id' => 'image_id'])
->viaTable('sliders_images', ['slider_id' => 'id'], function($query){
$query->orderBy('sliders_images.display_order ASC');
});
}
當我打電話$model->images
我收到正確的圖像,但錯誤的順序,使用的foreach的圖像是由ID排序的,我怎麼能得到按其他屬性排序的圖像?
Korshunow感謝您的重播,您的建議是不正確的方式,但打開我的想法找到解決方案。表格圖像沒有display_order屬性,這是一個聯結表屬性。爲了在查詢中具有聯結表屬性,我需要一個'joinWith()'語句。遵循正確的答案。 – MarBer
哦,錯過了)你說得對。實際上,我總是更喜歡爲每個表聲明分離的AR實體,並在關係和查詢中處理'via'和'joinWith'而不是直接表引用。這種方法導致更加乾淨,靈活和可持續的代碼恕我直言。所以,當然,你以正確的方式)) – oakymax