我试图让所有用户都拥有角色,但是"角色"字段始终是一个空数组。
共有4位用户,其中2位至少有1位角色已经过验证。
UserController.php
public function getUsers()
{
$users = User::select('name', 'email', 'type')->with('roles')->get();
return view('user.list', ['users' => $users, 'lang' => Lang::getLocale()]);
}
我得到了'角色'即使我没有使用" with->(' role')"在控制器中。不可思议?
如果我在视图中打印每个用户角色,我会得到:
object(Illuminate\Database\Eloquent\Collection)#281 (1) { ["items":protected]=> array(0) { } }
我做错了什么?
答案 0 :(得分:0)
您还必须选择与哪些角色相关的主键。 Eloquent首先选择所有用户,然后根据他们的IDS(主要和外国)选择关系。如果你不选择主键,他就无法联系到关系。
$users = User::select('id', 'name', 'email', 'type')->with('roles')->get();
此外,如果您想要指定所需角色的哪些列,则还必须选择外键。
$users = User::select('id', 'name', 'email', 'type')->with(['roles' => function ($query) {$query->select('id', 'name', 'user_id');}])->get();