首先——请原谅无知,我是拉拉维尔的新手。 :)
我正在Laravel中玩耍,在扩展开箱即用的User
模型时遇到了问题。我想实现一个角色的基本概念,应该简单地表示为User
的属性。
我已经创建了默认的用户模型和身份验证:
工匠制作:身份验证
从那里开始,产生了:
namespace App;
use Illuminate'Foundation'Auth'User as Authenticatable;
class User extends Authenticatable
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
}
我还创建了一个 UseRoles 模型,并尝试在两者之间创建关系:
namespace App;
use Illuminate'Database'Eloquent'Model;
class UserRoles extends Model
{
protected $table = 'user_roles';
public function User()
{
$this->belongsTo('App'User', 'user_id', 'id');
}
}
在User
模型中,我添加了:
public function Roles()
{
$this->hasMany('App'UserRoles', 'user_id', 'id');
}
最后,我运行了迁移脚本并启动了服务器,点击了 localhost 并使用默认的引导身份验证登录。
我希望看到的是用户模型之外的角色集合,但我没有。print_r显示没有其他属性的默认用户模型。
我忽略了什么明显的东西吗?
谢谢
不是对你的问题的直接回答,但在两个Roles()
和User()
中,你需要将这些关系返回return $this->belongsTo('App'User', 'user_id', 'id');
Roles()
方法只是定义模型User
与UserRoles
模型之间关系的方法。事实上,它返回了一个Relation
对象的实例,您可以在其上玩游戏
User
模型中的角色的属性:您应该调用 Auth::user()->Roles()->get()
对数据库进行查询并返回Collection
UserRoles
或者,您可以使用动态属性 Auth::user()->Roles;
访问集合,该属性将从数据库延迟加载关系