Laravel关系多对多

时间:2015-12-01 09:53:40

标签: laravel relationship

我使用laravel和sentinel(Sentry)默认使用用户,组和users_groups数据库表

users
-----------------
id         name
1          user
2          user
3          admin


groups
-------------------
id           name
1            Users
2            Admins

users_groups
--------------------
user_id      group_id
1            1
2            1
3            1
3            2

我定义了laravel模型的关系,当我尝试打印时,它的工作正常

$users = Group::find($id)->user;

但是如何仅打印用户?

$users = Group::where(array("name"=>"Users"))->get()->user;

它仍显示所有数据包括管理员,我只想向用户显示,该怎么做?

我知道这个问题,因为在users_groups表管理员也有用户ID ..

请有人帮助我。它非常混乱

1 个答案:

答案 0 :(得分:2)

您可以使用with获取指定关系的数据,如下所示:

$users = Group::with('user')->find($id);

这将返回用户组的数据。

如果您只想要用户表的数据,则必须更改查询而不是使用模型Group,您需要在User模型上查询如下内容:

$users = User::where('group_id', $groupId);

http://laravel.com/docs/5.1/eloquent-relationships http://laravel.com/api/5.1/Illuminate/Database/Eloquent/Model.html#method_with