我有2个表格:角色和用户。
在用户中,我具有role_id,并且我想检查该角色的true上是否包含一列“ access_admin_area”。如果为true,则表示我在使用中间件。
Gate::define('admin', function ($user) {
return !empty($user->roles()->where('access_admin_area', true)->first());
});
从用户模型:
public function roles()
{
return $this->hasOne(Role::class);
}
SQLSTATE [42703]:未定义的列:7错误:列role.user_id不存在↵LINE1:从“ roles”中选择*,其中“ roles”。“ user_id” = $ 1和“ role ..
该错误在这里很好地描述了该问题-用户模型中的hasOne关系方法希望角色表行具有一个user_id列,该列指定一个引用用户表id列的外键。
如果我是您,则宁愿在此用例中在用户和角色模型之间使用hasMany关系,因为我希望您的用户和角色应具有多对多关系
check out the many-to-many relationship eloquent and database structure in the laravel documentation https://laravel.com/docs/7.x/eloquent-relationships#many-to-many