2015-12-01 34 views
1

我使用laravel和哨兵(哨兵),其默认情况下使用的用户,组和users_groups数据库表Laravel关系多对多

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太..

请帮助我的人。这是柠混乱

回答

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

+0

它不工作,因为也有可以充当用户的管理员,ii使用group_id = user的位置查询,然后也选择管理员 – yudijohn