permissions = collect($data) ->filter(fn (mixed $permission, string $key): bool => ! in_array($key, ['name', 'guard_name', 'select_all', Utils::getTenantModelForeignKey()])) ->values() ->flatten() ->unique(); if (Utils::isTenancyEnabled() && Arr::has($data, Utils::getTenantModelForeignKey()) && filled($data[Utils::getTenantModelForeignKey()])) { return Arr::only($data, ['name', 'guard_name', Utils::getTenantModelForeignKey()]); } return Arr::only($data, ['name', 'guard_name']); } protected function afterSave(): void { $permissionModels = collect(); $this->permissions->each(function (string $permission) use ($permissionModels): void { $permissionModels->push(Utils::getPermissionModel()::firstOrCreate([ 'name' => $permission, 'guard_name' => $this->data['guard_name'], ])); }); // @phpstan-ignore-next-line $this->record->syncPermissions($permissionModels); } }