2016-07-17 3 views
0

私はLaravelで非常に新しいです。ネストされたクエリの改善されたアプローチ

私はこのクエリ

$city = City::where('slug', $slug)->first(); 
$city->users = $city->users()->where('gender', 'male')->get(); 

は、だから私はこのような状況のためのより良い方法は何か疑問に思っています。要約すると、私は都市とジェンダー=男性がある市に属するすべてのユーザーを見つける必要があります。

私はこれを行うにしようとしましたが、私は行方不明です何

$city = City::whereHas('users', function($q) { 
      $q->where('gender', '=', 'male'); 
     })->where('slug', $slug) 
      ->first(); 

を動作しませんでしたか?

答えて

1

これはLaravelのEager Loadingで可能です。 あなたの都市モデルクラスに適切に設定された関係で、

$city = City::where('slug', $slug) 
     ->with(['users' => function ($query) { 
           $query->where('gender', 'male'); 
          }])->first(); 
+0

これは機能しました。しかし、私は $ city [0] - > usersのようなものを使って結果をキャッチする必要があります。そうですか?ありがとうございます –

+0

素晴らしい!私は最初の結果だけを得るために答えを編集しました、私はオブジェクトではなく配列を返すべきだと思います。投票に回答しましたか? :) –

+0

クール!しかし、最初に結果の最初の行だけを取得しないでください?まだその方法で働いています!もう一度! –

関連する問題