如何从belongsTo关系中加载一组值

时间:2015-07-23 19:10:23

标签: laravel eloquent

我有3个表,代表UserGroup以及GroupUser之间的多对多(belongsToMany)关系作为数据透视表。我想要做的只是显示所有 <{1}}成员的用户。

group_id 2

我的解决方案 在User和GroupUser之间创建belongsTo(hasMany)关系,以便GroupUser属于Too User,然后急切加载所有不属于group_id 2的用户。

我如何在我的控制器中编写代码并在刀片中查看?

在我使用WhereNotIn条件之前,我试图简单地加载所有用户。到目前为止,我有这个,但由于某种原因,它只读取group_user表中的最后一行。

User model    GroupUser model (pivot table)      Group model

ID|name         ID|user_id|group_id            ID|group_name
1 |Mark          1| 1     |2                    1| the sharks
2 |Sam           2| 3     |1                    2| the tigers
3 |Sally         3| 2     |3                    3| the whales
4 |Tim           4| 4     |2 

上面代码的结果是Tim

1 个答案:

答案 0 :(得分:0)

这将显示不属于group_id = 2的所有用户。

控制器或存储库:

$group_id = 2;
$users = User::whereHas('groups',function($query) use($group_id) {
    $query->where('id','!=',$group_id); 
})->get();

return view('your_view',compact('users')); //this will pass the $users collection to the view.

查看(使用刀片):

@foreach($users as $user)
    {{$user->name}}
    {{$user->etc}}
@endforeach
  • 此代码假定您的用户模型上有一个名为“groups”的公共方法。并且该方法返回belongsToMany关系。