shouldSync()) { $model->triggerSyncEvent(); } }); static::creating(function (self $model) { if (! $model->getAttribute($model->getGlobalIdentifierKeyName()) && app()->bound(UniqueIdentifierGenerator::class)) { $model->setAttribute( $model->getGlobalIdentifierKeyName(), app(UniqueIdentifierGenerator::class)->generate($model) ); } }); } public function triggerSyncEvent(): void { /** @var Syncable $this */ event(new SyncedResourceSaved($this, tenant())); } public function getSyncedCreationAttributes(): array|null { return null; } public function shouldSync(): bool { return true; } public function tenants(): MorphToMany { return $this->morphToMany(config('tenancy.models.tenant'), 'tenant_resources', 'tenant_resources', 'resource_global_id', 'tenant_id', 'global_id') ->using(TenantMorphPivot::class); } }