用户模型:
<?php
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableInterface;
use Zizaco\Entrust\HasRole;
class User extends Eloquent implements UserInterface, RemindableInterface {
use HasRole;
角色模型:
<?php
use Zizaco\Entrust\EntrustRole;
class Role extends EntrustRole
{
}
许可模式:
<?php
use Zizaco\Entrust\EntrustPermission;
class Permission extends EntrustPermission
{
}
用户控制器:
public function postSignin(){
if (Auth::attempt(array('email'=>Input::get('email'),
'password'=>Input::get('password')))) {
$id = Auth::user()->id;
$user = User::where('id','=',$id);
$firstname = Auth::user()->firstname;
if ($user->hasRole("User_Not_Approved")) {
return Redirect::intended('/users/dashboard');
}
错误讯息:
BadMethodCallException 调用未定义的方法Illuminate \ Database \ Query \ Builder :: hasRole()
当用户登录时,IF语句正在运行时会显示错误消息。我已按照Entrust的说明进行操作,但我不知道为什么它没有接收到方法
非常感谢任何帮助!
答案 0 :(得分:0)
尝试更改:$ user = User :: where(&#39; id&#39;,&#39; =&#39;,$ id); to $ user = User :: find($ id);
用户::需要的地方 - &gt;得到你想要的东西,即使这样它也会返回一个集合;你会想要像User :: where(etc) - &gt; first();确保您拥有一个User实例。实际上,既然你是通过id检索的,那就是 - &gt; find($ id)是为什么设计的,以及你应该做什么。