首页 > 解决方案 > Laravel Spatie 获取用户角色

问题描述

模型文件

class BanUser extends Model
    {        
    public function user()
                {
                    return $this->belongsTo(User::class, "user_id", "id");
                }   
        
         public static function getBanList()
                {
                  
                    $getlist = BanUser::with(['user'])
                                ->get()
                                ->toArray();
            
                    return $getlist;
                    
                }
    }

//数据

[0] => Array
                (
                    [id] => 3
                    [user_id] => 2
                    [created_at] => 2020-09-16T16:06:54.000000Z
                    [updated_at] => 2020-09-16T16:06:54.000000Z
                    [user] => Array
                        (
                            [id] => 2
                            [name] => hi
                            [email] => hi@gmail.com
                            [email_verified_at] => 
                            [created_at] => 2020-09-10T12:18:18.000000Z
                            [updated_at] => 2020-09-10T12:19:11.000000Z
                   
                        )

                )

上面的代码是检索所有禁止用户列表,但是每个用户都附加了一个角色,我怎样才能加入角色表以便检索每个用户的角色?我使用了 laravel spatie 权限。任何人都可以在这方面提供帮助吗?:(

标签: phplaravelpermissionslaravel-permission

解决方案


我想你可以用这个

public function user()
{
     return $this->belongsTo(User::class, "user_id", "id")->with('roles');
}

roles是由添加的,laravel spatie因此您可以使用它

这是角色模型https://github.com/spatie/laravel-permission/blob/master/src/Models/Role.php

您可以使用的所有可用功能 https://github.com/spatie/laravel-permission/blob/master/src/Traits/HasRoles.php


用另一种方式

public static function getBanList()
{              
     $getlist = BanUser::with(['user.roles']) // it will get user as well as all the roles of that user
                           ->get()
                            ->toArray();
      return $getlist;                
}

推荐阅读