2016-09-29 8 views
0

3つのテーブルがあり、メンバーがまだ存在していない使用可能なグループを取得したいです上記の関係を使用して、グループに割り当てられたメンバーを取得することができますコードの最適化は、私が

Model\Member::with('group')->find('member_id') 

私はそれらのグループwhメンバーが割り当てられていない場合私は

$arg['ids'] = $member->group->lists('_id'); 
     $group = Group::where('user_id',$user_id)->whereNotIn('_id',$arg['ids'])->limit($arg['limit'])->offset($arg['offset'])->get(); 

使用してこれを行うことができるよ

は別のオプションではなく、サブクエリを使用してはありますか?

答えて

1

は、あなただけの関係でメンバーオブジェクトに関連グループを取得することができます。関係のないすべてのグループを取得するには、グループモデルでクエリを実行する必要があります。

次のコードは、トリックを行う必要があります。

$unrelatedGroups = Group::whereDoesnHave('member', function($query) use ($user_id) { 
    $query->where('id', $user_id); 
})->get(); 

これは、与えられた$ user_idをを持つメンバーを持っていないすべてのグループを返します。 グループというメンバーというモデルで定義されている多対多の関係が、指定されたグループのすべてのメンバーにリンクしていることを確認してください。

+0

ありがとう、それは魅力のような鍋です:) –