Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel-如何指定要显示的用户角色_Laravel_Api - Fatal编程技术网

Laravel-如何指定要显示的用户角色

Laravel-如何指定要显示的用户角色,laravel,api,Laravel,Api,我正在使用Laravel-5.8作为后端开发一个Web应用程序。我结合了两个类:用户和角色 ApiController.php public function store(Request $request) { if(!Auth::user()->hasPermissionTo('Add Users')) return response()->json([ "message" => 'User do not have permission'], 401)

我正在使用Laravel-5.8作为后端开发一个Web应用程序。我结合了两个类:用户和角色

ApiController.php

public function store(Request $request)
{
    if(!Auth::user()->hasPermissionTo('Add Users'))
        return response()->json([ "message" => 'User do not have permission'], 401);

    $request->validate([
        'name' => 'required|string|min:2',
        'email' => 'required|string|email|unique:users',
        'password' => 'required|string|confirmed|min:6'
    ]);

    $user = new User([
        'name' => $request->name,
        'email' => $request->email,
        'password' => bcrypt($request->password),
        'activation_token' => str_random(60),
        'address' => $request->email,
        'about' => $request->email,
    ]);

    if($request->role)
        foreach($request->role as $role)
            $user->assignRole($role);
    else {
        return response()->json([
            'error' => 'Role Not Found!'
        ], 401);
    }

    $user->school_id = Auth::user()->school_id;

    if($request->address)
        $user->address = $request->address;

    if($request->about)
        $user->about = $request->about;

    $user->save();

    $avatar = Avatar::create(strtoupper($user->name))->getImageObject()->encode('png');
    Storage::put('avatars/'.$user->id.'/avatar.png', (string) $avatar);
    $user->notify(new SignupActivate($user));

    return response()->json([
        'message' => 'Successfully Added New User!'
    ], 201);
}

根据上面的代码,我不想显示所有角色。我想使用foreach语句只选择和显示这两个角色:Admin和Staff。 也就是说,其中role_name=Admin,Staff

foreach($request->role as $role)
    $user->assignRole($role);

我怎样才能做到这一点呢?

我想你可以这样做

  • 您可以使用此处文档中的Laravel过滤器方法
  • 此方法返回已通过给定条件的项数组
  • 首先将角色请求转换为集合
  • 然后使用如下条件

    如果($role=='Admin'| |$role=='Staff')返回( 您可以看到return$value>2


  • $filtered->all()


    //[3,4]

    您想显示它们还是分配角色,请澄清此选项,以便我可以帮助您be@Matovu罗纳德-我想分配角色,但只应显示两个角色:管理员和工作人员。我不想分配所有的任务,我将在你应该做的事情上发布一个答案,很快给你几秒钟,我已经发布了答案
    $collection = collect([1, 2, 3, 4]);
    
    $filtered = $collection->filter(function ($value, $key) {
        return $value > 2;
    });