ユーザーに何らかの役割があるかどうかをチェックしようとすると、このエラーが表示されます。正確なエラーは 不明なメソッドを呼び出す\ 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;
}
}
は参照してください。http://stackoverflow.com/questions/31790234/laravel-5-adding-hasrole-method-to-auth –