我有一个带有用户和角色模型以及它们之间一对一关系的应用程序。如何检查用户是否有角色。我收到一个SQLSTATE[42S22]
错误。
SQLSTATE [42S22]:找不到列:1054“ where子句”中的未知列“ roles.user_id”(SQL:select * from
roles
whereroles
。user_id
= 1和roles
。user_id
不为null并且name
=客户端限制1)
Users
---------------
* id
* name
* email
* password
* role_id
* created_at
Roles
---------------
* id
* name
* slug
* created_at
public function role()
{
return $this->hasOne(Role::class);
}
public function hasRole(string $role)
{
if ($this->role()->where('name', $role)->first()) {
return true;
}
return false;
}
public function users()
{
return $this->belongsTo(User::class);
}
您需要反转关系。用户有1个角色,角色有许多用户
角色:
public function users()
{
return $this->hasMany(User::class);
}
用户:
public function role()
{
return $this->belongsTo(Role::class);
}
这是一对多的关系。请参阅文档:https : //laravel.com/docs/8.x/eloquent-relationships#one-to-many
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句