我想通过voornaam(名字)对用户进行排序。但我通过关系获取数据。
如何进行查询以便关系用户按字母按名字排序
我的职能:
public function sortfirstname($id) {
$ingeschrevenspelers = UserToernooi::with('users')->where('toernooiid', '=', $id)->get()->all();
//This query ^^
$toernooi = Toernooi::findOrFail($id);
dd($ingeschrevenspelers);
return view('adminfeatures.generatespelerslijst', compact('ingeschrevenspelers', 'toernooi'));
}
感谢任何帮助
提前致谢
答案 0 :(得分:2)
使用您自己的语言编写代码并不会让其他开发人员很容易理解您的代码。
话虽这么说,你可以尝试orderBy()
方法来处理你的关系
在您定义关系的模型中:
public function relationship()
{
return $this->belongsTo(SomeClass::class)->orderBy('name', 'DESC');
}
答案 1 :(得分:1)
如果您不想修改Model类本身,可以替代Jordy Groote的答案,您可以使用闭包查询它。
$ingeschrevenspelers = UserToernooi::with(['users' => function($q) {
$q->orderBy('voornaam', 'asc');
}])->where('toernooiid', '=', $id)->get()->all();
参考:https://laravel.com/docs/5.3/eloquent-relationships#constraining-eager-loads
旁注:当您已经->all()
->get()
答案 2 :(得分:1)
不要在最后触发所有()功能,从而获得集合结果实例
//query without the all function
$ingeschrevenspelers = UserToernooi::with('users')->where('toernooiid', '=', $id)->get();
//
$ingeschrevenspelers = $ingeschrevenspelers->sortBy('users.firstname');
答案 3 :(得分:0)
$ingeschrevenspelers = UserToernooi::with(['users' => function($query){
$query->orderBy('voornaam', 'asc');
}])->where('toernooiid', '=', $id)->get()->all();