我有一个已登录的用户,这里的代码有效:
@if( Auth::check() )
Logged in as: {{ Auth::user()->firstname }} {{ Auth::user()->lastname }}
@endif
我正在使用zizaco / entrust,并且一切正常。我已经创建了角色和权限,并为我的用户指定了具有管理权限的管理员角色。
那么,为什么不起作用:
$user = Auth::user();
print_r($user->hasRole('admin'));
如果我使用print_r $ user,则可以看到已加载Auth用户,但是hasRole无法正常工作。目前,我只是在刀片模板中对此进行测试,但在Controller中对其进行了尝试,但结果相同。我的错误是:
BadMethodCallException in Builder.php line 1992:
Call to undefined method Illuminate\Database\Query\Builder::hasRole()
我的用户模型:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Zizaco\Entrust\Traits\EntrustUserTrait;
class User extends Model {
use EntrustUserTrait;
protected $table = 'users';
public $timestamps = true;
use SoftDeletes;
protected $dates = ['deleted_at'];
}
更新
当我以这种方式查找用户时,我意识到hasRole对我有效(返回App \ Models \ User Object):
$user = \App\Models\User::find( \Auth::user()->id );
但是当我以这种方式找到用户时却没有(返回App \ User Object):
$user = \Auth::user();
我宁愿以为它会以另一种方式起作用,当我拉出App \ User时,我可以访问hasRole,但是当我搜索用户时并不一定。我认为hasRole可以直接从Auth :: user()运行,而不必使用用户模型来查找用户... ???
找到了问题。
在config / auth.php中
'model' => 'App\User',
我的名称空间要求
'model' => 'App\Models\User',
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句