php - 无法为用户分配角色

标签 php laravel laravel-5 laravel-5.1

我试图在我的 Laravel 应用程序上使用 spatie(laravel-permission),但我无法为用户分配角色。我面临的错误是

调用未定义的方法 Illuminate\Database\Query\Builder::assignRole()

管理员 Controller .php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\User;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Traits\HasRoles;
class AdminsController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $users = User::all();

        return view('admin.dashboard', compact('users'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $user = User::whereId($id)->firstOrFail();
        // $user->hasAllRoles(Role::all());
        return view('admin.show', compact('user'));
    }

    public function assignRole($id){
        $user = User::whereId($id)->firstOrFail()->assignRole('Staff');
        redirect('/dashboard');

    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
         $user = User::whereId($id)->firstOrFail();
         $user->destroy();

         redirect('/dashboard');
    }
}

最佳答案

添加特征 use HasRoles;在您的用户模型中。
use Spatie\Permission\Traits\HasRoles; 导入在模型文件的顶部。

关于php - 无法为用户分配角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34089485/

相关文章:

php - 如何从其他表中删除数据 - WordPress

php - Laravel 支持 return Redirect::back()->withFile() 吗?

php - Laravel 5 SSL - 使用过时的密码学加密

php - 多语言网站、技巧和解决方案

php - Laravel 中具有多个选择的存储过程仅给出一张表

php - 在弹性 beantalk 部署上的 ec2 微型实例上创建交换文件/驱动器

php - 为什么使用 dotenv 库而不是解析 ini 文件?

php - __call() 方法说明

php - Laravel 尝试选择属于关系列

php - 无法在 Heroku 上迁移数据库(试过 MySQL 和 PostgreSQL)