我有一个Objective模型,它有很多Action,每个Action都有一个ActionYear。已在模型中定义。
如何使用orderby通过action_year的特定列对目标中的操作进行排序。
$query = Objective::with('actions.actionYear')
->orderBy('action_year.created_at')
->get();
这是通过错误Undefined table: 7 ERROR: missing FROM-clause entry for table "action_year"
。
怎么解决这个问题。谢谢。
答案 0 :(得分:1)
您可以使用闭包订购预先加载的模型:
$query = Objective::with(['actions.actionYear' => function($q){
$q->orderBy('action_year.created_at');
})->get();
答案 1 :(得分:0)
如果你使用函数with(),那么这只会确保加载命名关系,以避免以后额外需要SQL查询。与Objective::all()
如何实现排序集合的一种方法是在加载像这样的数据之后使用sortBy()
函数
$query = $query->sortBy(function($objective){
return $objective->actionYear->created_at;
});