Yii2 ORDER BY用于ActiveRecord中的关系数据

时间:2015-04-18 22:43:20

标签: yii2

我的控制器中有一个查询:

$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();

1 个答案:

答案 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){
...
}