【问题标题】:Call to undefined method Illuminate\Database\Query\Builder::role()调用未定义的方法 Illuminate\Database\Query\Builder::role()
【发布时间】:2017-04-10 13:00:11
【问题描述】:

当我尝试检查用户是否具有某些角色时,我在视图中收到此错误。确切的错误是 调用未定义方法 Illuminate\Database\Query\Builder::role() (查看:C:\xampp\htdocs\laravel-projects\acl\resources\views\admin.blade.php

这里是 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() 是用户模型中的一个函数。但是从错误中它抛出未定义的方法角色()。但是没有称为role()的方法

这是我的控制器

class AdminController extends Controller
{

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

在从数据库中获取数据时,我也确实包含了该方法,例如

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

即使这样也没有用。

这是我的用户模型。

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

【问题讨论】:

标签: php laravel


【解决方案1】:

您有roles() 关系,但您正在尝试调用role()。这就是您收到错误消息的原因。

所以,把代码改成这样:

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

【讨论】:

  • 说真的,我没有注意到这一点。非常感谢:D
猜你喜欢
  • 2014-04-23
  • 2020-01-04
  • 2018-10-03
  • 1970-01-01
  • 2019-04-02
  • 2016-11-25
  • 2017-07-19
  • 2017-01-18
  • 2018-05-11
相关资源
最近更新 更多