2016-11-26 4 views
1

Ich erhalte diesen Fehler in meiner Sicht, als ich versuchte zu überprüfen, ob der Benutzer eine Rolle hat. Der genaue Fehler ist Call to undefined Methode Illuminate \ Database \ Abfrage \ Builder :: Rolle() (Ausblick: C: \ xampp \ htdocs \ Laravel-Projekte \ acl \ resources \ views \ admin.blade.phpAufruf zu undefinierter Methode Illuminate Database Query Builder :: role()

Dies ist der admin.blade.php Code

@foreach($users as $user) 
<tr> 

<td>{{$user->name}}</td> 
<td>{{$user->email}}</td> 
<td><input type="checkbox" {{ $user->hasRole('User') ? 'checked' : '' }} name="role_user"></td> 
<td><input type="checkbox" {{ $user->hasRole('Author') ? 'checked' : '' }} name="role_author"></td> 
<td><input type="checkbox" {{ $user->hasRole('Admin') ? 'checked' : '' }} name="role_admin"></td> 
<td>{{$user->name}}</td> 
<td>{{$user->email}}</td> 
</tr> 
@endforeach 

hasRole() ist eine Funktion in dem Benutzermodell. Aber aus dem Fehler wirft sie undefiniert Methode Rolle(). Aber es gibt keine Methode aufgerufen Rolle()

Hier ist mein Controller

class AdminController extends Controller 
{ 

public function index() 
{ 
$user_details = User::all(); 
return view('admin')->with('users' , $user_details); 
}  
} 

Ich habe auch das Verfahren, während die Daten von DB wie

bekommen
$user_details = User::with('hasRole')->get(); 

Auch diese Arbeit nicht.

Dies ist mein Benutzermodell.

<?php 

namespace App; 
use App\Role; 

use Illuminate\Foundation\Auth\User as Authenticatable; 

class User extends Authenticatable 
{ 

public function roles() 
{ 
    return $this->belongsToMany('App\Role','user_role','user_id','role_id'); 
} 

public function hasAnyRole($roles) 
{ 
    if(is_array($roles)){ 

     foreach ($roles as $role) { 

      if ($this->hasRole($role)) { 
       return true; 
      } 
     } 
    } 
    else{ 

     if ($this->hasRole($roles)) { 

      return true; 
     } 
    } 
    return false; 
} 

public function hasRole($role) 
{ 
    if ($this->role()->where('name',$role)->first()) { 

     return true; 
    } 

    return false; 
} 
} 
+0

siehe: http://stackoverflow.com/questions/31790234/laravel-5-adding-hasrole-method-to-auth –

Antwort

2

Sie haben roles() Beziehung, aber Sie versuchen role() zu nennen. Deshalb erhalten Sie den Fehler.

So ändern Code dazu:

if ($this->roles()->where('name',$role)->first()) { 
+1

Ernst den Ball hielt ich bemerke, dass . Vielen Dank: D –

Verwandte Themen