2016-05-25 7 views
0

Iユーザーのモデルを持っており、その中に、私は次の関係、私はまた、グループ内のモデルの逆を設定している取得ピボットテーブルのデータが

public function group() 
{ 
    return $this->belongsToMany('App\Group', 'users_user_groups')->withPivot('user_id', 'group_id'); 
} 

を持っています。完了したら、私はこのようなデータを持つusers_user_groupテーブルを持っています

+------+-------------------+----------+ 
| id |   user_id | group_id | 
+------+-------------------+----------+ 
| 755 |     1 |  1 | 
| 756 |     1 |  2 | 
| 757 |     1 |  3 | 
| 758 |     1 |  4 | 
| 759 |     1 |  5 | 
| 760 |     1 |  6 | 
| 761 |     1 |  7 | 
| 762 |     1 |  8 | 
| 763 |     1 |  9 | 
| 764 |     1 |  10 | 
| 765 |     2 |  11 | 
| 766 |     2 |  7 | 
| 767 |     2 |  10 | 
| 768 |     3 |  12 | 
| 769 |     3 |  13 | 

私はデータが正しく挿入されていることを知っています。私のコントローラの1つでは、group_idが1のadminグループに属するすべてのユーザーを取得しようとしています。だから今行っています $ users = User :: where( 'active'、 '=' true) - > get();

foreach ($users as $user) { 
    if($user->group()->where('groupName', 'admin')) { 
     $groupArray[] = $user; 
    } 
} 

しかし何らかの理由で、すべてのユーザーがこのアレイに追加され、管理者のみが追加される必要があります。

私は間違っていることについてアドバイスを探していましたか?どうにかしてgroupNameをgroupIdにリンクする必要がありますか?

おかげ

答えて

1

はこのお試しください:すべてのユーザーが特定のグループに

に関連得るためにあなたの要件のベースに

foreach ($users as $user) { 
    $userGroups = $user->group()->where('groupName', 'admin')->get(); 

    if($userGroups->count()) { 
     $groupArray[] = $user; 
    } 
} 
1

をあなたは

$users = User::whereHas('group', function($q) use($group_id){ 
    $q->where('group.id', '>=', $group_id); 
})->get(); 

ような何かを行うことができますかwith Eager Loading:

$users = User::where('id', $user_id) 
    ->with([ 'group' => function($query) use ($group_id) { 
    $query->where('id', $group_id) 
}]); 
+0

最初の提案は私に、Illuminate \ Database \ Eloquent \ Builder ::に渡された引数2を与えます。ここで、HAS()はClosureのインスタンスでなければなりません。また、groupId、groupNameだけがわからないとどうなりますか?ありがとう –

+1

'group_id'あなたがグループに適用したい条件です。 –

関連する問題