Laravel 5.4 with Entrust:如何获得具有角色的用户

Laravel 5.4 with Entrust: How to get users with roles

我正在尝试让所有用户都具有角色,但是 "roles" 字段始终是一个空数组。

有 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()]);
}

我得到的 'roles' 字段是一个空数组,即使我没有在控制器中使用 "with->('roles')"。奇怪?

如果我在视图中打印每个用户角色,我会得到:

object(Illuminate\Database\Eloquent\Collection)#281 (1) { ["items":protected]=> array(0) { } }

我做错了什么?

您还必须 select 主键,角色相关。 Eloquent 首先 selecting 所有用户,然后根据他们的 IDS(主要和外国)selecting 关系。你没有select主键,他关联不了关系

$users = User::select('id', 'name', 'email', 'type')->with('roles')->get();

此外,如果您想指定角色中的哪些列,您也必须 select 外键。

$users = User::select('id', 'name', 'email', 'type')->with(['roles' => function ($query) {$query->select('id', 'name', 'user_id');}])->get();