2014-10-09 100 views
0

我需要从我的数据库中获取所有用户,不包括属于AdminStaff组的用户,我需要为他们每个人获取他们的个人资料,所以我使用Eager装载:Laravel - Eager Loading只获得第一个结果

$data['users'] = User::with('profile')->join('role_user', function($join){ 
    $join->on('role_user.user_id', '=' , 'users.id'); 
}) 
->join('roles', function($join){ 
    $join->on('roles.id', '=', 'role_user.role_id'); 
}) 
->whereNotIn('roles.name', ['Admin', 'Staff']) 
->withTrashed() 
->paginate(10); 

我的数据库表:

users: 
id | email | password 

profile: 
user_id | first_name | last_name 

roles: 
id | name 

role_user: 
user_id | role_id | 

的问题是,上面的代码与user的相关信息,但只显示第一profile所以我也有同样first_name and last_name与不同耳鼻喉科email

+0

您从所有表中选择多个'id'领域,所以'您的模型id'被覆盖。使用关系,会更容易。 – 2014-10-09 15:05:23

回答

0

这样的事情应该工作:

$users = \User::with('profile', 'roles') 
->whereRaw('roles.name', '!=' 'Admin', 'OR', 'roles.name', '!=', 'Staff') 
->withTrashed()->paginate(10);