【问题标题】:Laravel Many to Many relation ship \ USERS -ROLESLaravel 多对多关系\用户-角色
【发布时间】:2017-04-16 06:11:35
【问题描述】:

我想获取所有用户:

$users=User::get();

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

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

但它给出了一个错误Trying to get property of non-object

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

【问题讨论】:

    标签: laravel many-to-many relationship


    【解决方案1】:

    您正在尝试从多对多关系访问单个项目:

    作为一个用户有很多角色,你应该首先迭代它的每个角色 并获取角色名称,或者简单地从集合中取出第一个对象。

    只需使用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;
       }
    }
    

    希望这会有所帮助!

    【讨论】:

    • 都是一样的:)
    • @NikolaVi - 如果您认为此答案正确且有帮助,请接受并点赞此答案,因为它激励我回答此类其他问题并帮助其他人快速找到正确答案!
    • 我投票给你,它表示感谢您的反馈,但不会增加投票数!!
    • @NikolaVi 你需要至少有 15 声望才能投票;)
    • 是的,这是真的!那么接受答案呢? :D
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      你可以看看这个:

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

      【讨论】:

        猜你喜欢
        • 2017-05-17
        • 2017-09-21
        • 2022-01-08
        • 2017-10-06
        • 2022-01-23
        • 2019-08-17
        • 2018-06-15
        • 2021-07-31
        • 1970-01-01
        相关资源
        最近更新 更多