Laravel - Eager Loading仅获得第一个结果

时间:2014-10-09 14:38:48

标签: laravel-4 eager-loading

我需要从我的数据库中获取所有用户,不包括属于AdminStaff组的用户,我需要为每个用户获取他们的个人资料,以便我使用Eager加载:

$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

1 个答案:

答案 0 :(得分:0)

这样的事情应该有效:

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