2017-05-25 53 views
0

我想獲得所有用戶的角色,但「角色」字段始終是一個空的數組。Laravel 5.4與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()]); 
} 

我得到的「角色」字段爲空數組,即使我不使用「與 - >(‘角色’)」在控制器中。奇怪的?

如果我打印視圖中的每個用戶的角色,我得到這個:

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

我做錯了嗎?

回答

0

您還必須選擇與哪個角色相關的主鍵。 Eloquent首先選擇所有用戶,然後根據他們的IDS(主要和外部)選擇關係。如果你不選擇主鍵,他不能把關係聯繫起來。

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

另外,如果你想specifi你想要的列從角色,你必須選擇外鍵也。

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

這完全有道理......現在它的作品當然!非常感謝 –

相關問題