2016-09-12 50 views
0

私はvoornaam(firstname)でユーザーを並べ替えたいと思っています。リレーションを介してデータを取得しています。関係者は、アルファベットでファーストネームでソートされている、ようにlaravelで関係を使ってユーザーを並べ替える

は、どのように私は私のクエリを作るのですか

私の機能:私は任意のヘルプが enter image description here

でソートしたい何

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')); 
} 

お礼

ありがとうございました

答えて

1

全てを発射しないでください()が機能し、コレクション結果のインスタンス

//query without the all function 
$ingeschrevenspelers = UserToernooi::with('users')->where('toernooiid', '=', $id)->get(); 

// 
$ingeschrevenspelers = $ingeschrevenspelers->sortBy('users.firstname'); 
+0

ありがとうございました – Rubberduck1337106092

2

あなたの言語でコードを書くことは、他の開発者があなたのコードを理解するのを非常に簡単にしません。言われて、あなたはあなたが関係を定義し、あなたのモデルでは、あなたの関係

orderBy()方法を試すことができ

public function relationship() 
{ 
    return $this->belongsTo(SomeClass::class)->orderBy('name', 'DESC'); 
} 
1

Jordy Grooteの答えの代わりにあなたがしたくない場合Modelクラス自体を変更すると、クロージャを使用してそのクラスを照会することができます。

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

+0

ありがとうございます。彼の答えが最良の答えとしてチェックされるようにマックスが最初に答えた。 – Rubberduck1337106092

+0

笑。マックスが最後に答えました。しかし、そのクール。あなたの期待した結果が得られれば、Maxの答えはもっとシンプルに見えます。 – Mosufy

0
$ingeschrevenspelers = UserToernooi::with(['users' => function($query){ 
    $query->orderBy('voornaam', 'asc'); 
}])->where('toernooiid', '=', $id)->get()->all(); 
+0

ありがとうございます。しかし、マックスは最初に答えを出したので、彼の答えは最良の答えとしてチェックされました。 – Rubberduck1337106092

関連する問題