Php 在eloquent中的联接表字段上应用order by

Php 在eloquent中的联接表字段上应用order by,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,我有一个查询,它以一对一的关系将一个表与另一个表连接起来。如何按联接关系中的列对结果进行排序 $relation = ModelObject::where('status', '=', 1) ->with('related_table') ->get() 我需要使用related\u table的列(例如:name)对其进行排序。如何以雄辩的方式做到这一点。根据larav

我有一个查询,它以一对一的关系将一个表与另一个表连接起来。如何按联接关系中的列对结果进行排序

$relation = ModelObject::where('status', '=', 1)
                            ->with('related_table')
                            ->get()
我需要使用
related\u table
的列(例如:name)对其进行排序。如何以雄辩的方式做到这一点。

根据laravel,您可以添加这样的附加约束

$relation = ModelObject::where('status', '=', 1)
->with(['related_table' => function($query) {
        $query->orderBy('field', 'asc|desc');
}])
->get()
约束紧急负载

有时,您可能希望急切地加载关系,但也可以为急切地加载查询指定其他查询约束。下面是一个例子:

$users = App\User::with(['posts' => function ($query) {
    $query->where('title', 'like', '%first%');
}])->get();
最后你的代码应该是这样的

$relation = ModelObject::where('status', '=', 1)
->with(['related_table' => function($query) {
        $query->orderBy('field', 'asc|desc');
}])
->get()
你可以用这个

 $categories = Category::select(DB::raw('categories.*, count(*) as 
`aggregate`'))
->join('pictures', 'categories.id', '=', 'pictures.category_id')
->groupBy('category_id')
->orderBy('aggregate', 'desc');

->orderBy('related_table.field')使用
->orderBy('table.column_name')此包可以帮助您:orderBy()限制不适用于EloquentHanks的父级,这救了我