2015-12-04 4 views
0

Я попытался использовать пространственное (разрешение laravel) в моих приложениях laravel, но я не могу назначить роль пользователю. Ошибка я облицовкойНевозможно назначить роль пользователю

Призыв к неопределенным метод Осветите \ Database \ Query \ Builder :: assignRole()

AdminsContoller.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'); 
    } 
} 
+0

Вы определили метод 'assignRole' в своей модели пользователя? – Moppo

+0

http://laravel.com/api/5.0/Illuminate/Database/Eloquent/Builder.html#method_firstOrFail. вы получаете построитель как возвращаемый тип. убедитесь, что существует $ id. –

+1

Вы могли бы опубликовать свою модель пользователя и конфигурацию пространственного пространства, если это возможно? я подозреваю, что в вашей модели пользователя отсутствует 'Spatie \ Permission \ Traits \ HasRoles'. –

ответ

1

Добавить Черта use HasRoles;

в модели пользователя

Смежные вопросы