create user menus

This commit is contained in:
Geriano
2022-07-16 03:29:48 +07:00
parent 9d19268e05
commit bf199b7390

View File

@@ -70,11 +70,24 @@ class User extends Authenticatable
public function menus() public function menus()
{ {
return Menu::where(function (Builder $query) { return Menu::where(function (Builder $query) {
$this->permissions->each(fn (Permission $permission) => $query->orWhereRelation('permissions', 'id', $permission->id));
$this->roles->each(function (Role $role) use ($query) { $this->roles->each(function (Role $role) use ($query) {
$role->permissions->each(fn (Permission $permission) => $query->orWhereRelation('permissions', 'id', $permission->id)); $query->orWhereHas('permissions', function (Builder $query) use ($role) {
$query->orWhereRelation('roles', 'id', $role->id); $query->whereIn('permissions.id', $role->permissions->pluck('id')->toArray());
}); });
})->get(); });
$query->orWhereHas('roles', function (Builder $query) {
$query->whereIn('roles.id', $this->roles->pluck('id')->toArray());
});
$query->orWhereHas('permissions', function (Builder $query) {
$query->whereIn('permissions.id', $this->permissions->pluck('id')->toArray());
});
})
->orWhere(function (Builder $query) {
$query->orDoesntHave('permissions');
$query->orDoesntHave('roles');
})
->get();
} }
} }