Laravel很多很多关系都发布了\ USERS -ROLES

时间:2016-12-01 14:43:17

标签: laravel many-to-many relationship

我希望得到所有用户:

$users=User::get();

之后我想要每个角色的名字。

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

但它会出错[{1}}

知道如何获取所有用户和角色的名称吗?

3 个答案:

答案 0 :(得分: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;
   }
}

希望这有帮助!

答案 1 :(得分:0)

$user->roles是一个集合,你需要再做一次预告:

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

答案 2 :(得分:0)

你可以查看这个:

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

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