Laravel 5.4 with Entrust:如何让用户获得角色

时间:2017-05-25 11:34:18

标签: laravel entrust

我试图让所有用户都拥有角色,但是"角色"字段始终是一个空数组。

共有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) { } }

我做错了什么?

1 个答案:

答案 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();