gpt4 book ai didi

php - Laravel Eloquent 两种关系之间的关系

转载 作者:行者123 更新时间:2023-11-29 06:43:41 26 4
gpt4 key购买 nike

我希望你明白我的标题的意思,呵呵。这就是我想要实现的目标。

我有用户模型,它与角色权限有关系。代码如下:

class User extends Model {

....

public function roles() {
return $this->belongsToMany('App\Models\Roles');
}


public function permissions() {
return $this->belongsToMany('App\Models\Permissions');
}

}

这个工作很好,但我想要另一个像这样的功能

    ....

public function permissions_by_roles() {

}

....

因为每个用户都有单独的权限和从角色继承的权限。我想根据用户的角色获取用户的权限列表。我怎样才能实现这个目标?这是我的表格:

usersrolespermissionsrole_user - contains all roles of each user(ex. admin, super admin, user)permission_user - contains all permissions of each user (ex. edit, delete)permission_role  - contains all permissions for each roles.

我希望任何人都可以帮助我。先感谢您! :)

最佳答案

您可以使用hasManyThrough必要时结合合并的关系:

class User extends Model {

....

public function roles() {
return $this->belongsToMany('App\Models\Roles');
}


public function permissions() {
return $this->belongsToMany('App\Models\Permissions');
}

public function inheritedPermissions() {
return $this->hasManyThrough('App\Models\Permissions', 'App\Models\Roles');
}
}

然后,如果您想要所有用户权限,您可以执行以下操作:

 $user = User::with(["permissions", "inheritedPermissions"])->where("id", $id)->first();

所有权限将是:

$allPermissions = $user->permissions->merge($user->inheritedPermissions)->unique("id");

关于php - Laravel Eloquent 两种关系之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50444069/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com