2016-11-26 15 views
1

ユーザーに何らかの役割があるかどうかをチェックしようとすると、このエラーが表示されます。正確なエラーは 不明なメソッドを呼び出す\ Database \ Query \ Builder :: role()(表示:C:\ xampp \ htdocs \ laravel-projects \ acl \ resources \ views \ admin.blade.php定義されていないメソッドを呼び出す Database Query Builder :: role()

ここで

がadmin.blade.phpコードです

@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も()ユーザーモデル内の関数である。しかし、エラーから、それは未定義Methodeの役割をスローします()。しかし、役割と呼ばれる方法がありません()

ここは私のコントローラです

class AdminController extends Controller 
{ 

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

私はまたしても、これは動作しませんでした

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

のようにDBからデータを取得しながら、方法を含むました。

これは私のユーザーモデルです。

<?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

は参照してください。http://stackoverflow.com/questions/31790234/laravel-5-adding-hasrole-method-to-auth –

答えて

2

あなたはroles()関係を持っていますが、role()を呼び出すようにしようとしています。だからあなたはエラーを受けている。

ので、これに変更コード:

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

真剣に私は通知をdidntのこと。ありがとうございます:D –

関連する問題