我的控制器中有一个查询:
$model = Object::find()->where(['id' => $id])->with(['backups'])->one();
getBackups是一个hasMany()关系,因此$ model返回多个“备份”。
有没有办法订购'备份'?
我尝试了以下但没有结果(或错误):
$model = Object::find()
->where(['id' => $id])
->with(['backups' => function($query) {
$query->orderBy(['updated_at' => SORT_DESC]);
}])
->one();
答案 0 :(得分:9)
您可以在Object
模型中使用backups
声明已排序的关系orderBy
:
public function getSortedBackups()
{
return $this->hasMany(Backup::className(), ['object_id' => 'id'])->orderBy(['backups.updated_at'=>SORT_DESC]);
}
输出这些备份时结束:
foreach($model->sortedBackups as $backup){
...
}