Laravel Eloquent关系顺序问题

时间:2015-04-27 05:26:26

标签: php orm eloquent laravel-5

我有一个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"。 怎么解决这个问题。谢谢。

2 个答案:

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