【发布时间】:2015-05-04 12:31:11
【问题描述】:
我对 Laravel 很陌生,正在尝试为用户实现角色。
- 我已经创建了 Role 表和与之关联的 Model
- 我在
users表中添加了一列role。 - 我现在正在尝试检查
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/app/User.php', '62', array()) 在 User.php 第 62 行
我在登录时尝试过此操作,但没有以正确的角色登录。我在这里遗漏了什么明显的东西吗?
【问题讨论】:
-
在最后一个面板中将您的用户更改为 Guard。这应该是您正在寻找的解决方案。或者你可以直接使用
Auth::user()->isAdmin() -
成功了,谢谢