1

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

有 4 个用户,其中 2 个至少附加了 1 个角色,已验证。

用户控制器.php

public function getUsers()
{
    $users = User::select('name', 'email', 'type')->with('roles')->get();
    return view('user.list', ['users' => $users, 'lang' => Lang::getLocale()]);
}

即使我不在控制器中使用“with->('roles')”,我也会将“角色”字段作为空数组。奇怪的?

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

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

我做错了什么?

4

1 回答 1

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();
于 2017-05-25T11:55:39.047 回答