2017-05-25 9 views
0

ロールを持つすべてのユーザーを取得しようとしていますが、「ロール」フィールドは常に空の配列です。Entrustを使用するLaravel 5.4:ロールを持つユーザーを取得する方法

ユーザーが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(); 

また、必要なロールの列を指定する場合は、外部キーも選択する必要があります。

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

これはまったく意味があります...今はもちろん動作します!どうもありがとう –

関連する問題