2016-12-01 125 views
1

我希望得到所有用戶:Laravel多對多關係艦 USERS -ROLES

$users=User::get(); 

之後,我想每一個角色的名稱。

foreach ($users as $user) { 
    return $user->roles->name; 
} 

但它給出了一個錯誤Trying to get property of non-object

任何想法如何獲取名稱爲所有用戶和角色?

回答

1

你正試圖從許多訪問一個項目,以一對多的關係:

作爲一個用戶有很多角色,你應該首先遍歷它的每個角色 並獲得角色名稱,或採取了簡單的Collection中的第一個對象。

只需使用first()

$users = User::all(); 

foreach ($users as $user) { 
    return $user->roles->first()->name; 
} 

或者,如果你想獲得每一個:

foreach ($users as $user) { 
    foreach($user->roles as $role) { 
    echo $role->name; 
    } 
} 

希望這有助於!

+0

它與所有:) –

+0

同我已經更新答案! –

+0

它的作品,非常感謝你! –

0

$user->roles是一個集合,你需要做一個更多的foreach:

foreach($user->roles as $role) return $role->name

0

您可以檢查這一項:

$users = User::with('roles')->get(); 

$usersRolesNames = $users->roles->lists('name');