我有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