我正在开发一个项目,其中包含两个表roles
和users
之间的多对多关系。我还有一个数据透视表role_user
,其中包含有关其他两个表之间关系的信息。
role_user
两个字段,即两个表的id
:role_id
和user_id
。
现在我有一个来自users
表的用户对象,另一个角色对象来自roles
表。我想确定特定角色是否属于某个用户。
我知道这可以通过为数据透视表创建模型然后使用模型来完成,可以查询role_user
表并确定关系是否存在。
但我发现这种方法很有压力,并想知道雄辩是否提供了一种简单的方法来确定这一点。
谢谢你的帮助吗?
答案 0 :(得分:0)
您不需要拥有role_user模型。您可能已经拥有角色模型以及与您拥有的表相关的用户模型。 在Role.php和User.php中指定多对多关系
User.php - 职能角色
public function roles()
{
return $this->belongsToMany('App\Role');
}
Role.php - 功能用户
public function users()
{
return $this->belongsToMany('App\User');
}
如果不遵循表列和表中的命名约定,则可能必须定义其他参数,如数据透视表等。既然你似乎遵守了规则,我就不会解释它。但你总是可以参考laravel documentation's eloquent many-to-may section
现在您可以轻松检查用户是否属于某个角色。 请考虑以下考试
//select a user
$user = App\User::find(1);
//select a role
$role = App\Role::find(1);
//get $user's roles. This ill return an array of role objects that are belong to $user
$userRoles = $user->roles;
//check whether $role is in that array
if(in_array($role, $userRoles)){
//do something
}