我对Laravel非常陌生,并且正在尝试为用户实现角色。Laravel 5检查角色给出错误“尝试获取非对象的属性”
- 我已经创建与它
- 相关联的角色表和模型我添加了一个列
role
到users
表。 - 我现在试图去检查在
User
模型
编辑角色:一个答案/这里的解释后,我在users
表改变role
到role_id
但我仍然得到同样的错误。
这里是我的用户模型...
<?php namespace App;
use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
use Auth;
class User extends Model implements AuthenticatableContract, CanResetPasswordContract {
use Authenticatable, CanResetPassword;
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'users';
// more stuff
public function role()
{
return $this->belongsTo('App\Role');
}
public function isAdmin()
{
return $this->role->slug == 'admin';
}
}
而且我的榜样
<?php namespace App;
use Illuminate\Database\Eloquent\Model as Eloquent;
class Role extends Eloquent {
protected $table = 'roles';
public function users()
{
return $this->hasMany('App\User');
}
}
当我去我的管理页面,我有以下功能...
public function index(User $user)
{
if ($user->isAdmin()) {
return view('admin/home_admin');
}
else {
return redirect('home');
}
}
但是我得到错误...
尝试获取User.php中非对象的属性62行 HandleExceptions-> handleError('8','试图获取非对象的属性 ','/ home/vagrant/Code/esearch /应用程序/ user.php的”,‘62’,62
我试图此而在记录和不与正确的角色登录阵列()) 在user.php的线。我在这里错过了很明显的东西吗
在最后一个面板中更改您的User to Guard。这应该是你正在寻找的修复。或者你可以直接使用'Auth :: user() - > isAdmin()' –
这个工作谢谢 – Adrian