$eventDate->syncTenantDateText()); static::deleted(fn (self $eventDate) => $eventDate->syncTenantDateText()); } protected function casts(): array { return [ 'date' => 'date:Y-m-d', ]; } /** @return BelongsTo */ public function tenant(): BelongsTo { return $this->belongsTo(Tenant::class, 'tenant_code', 'codigo'); } /** @return HasMany */ public function variants(): HasMany { return $this->hasMany(Variant::class); } /** @return BelongsToMany */ public function selectedByVariants(): BelongsToMany { return $this->belongsToMany( Variant::class, 'variant_event_dates', 'event_date_id', 'variant_id', ); } public function startsAt(): CarbonInterface { return Carbon::parse($this->date->format('Y-m-d').' '.$this->time_start); } public function endsAt(): CarbonInterface { return Carbon::parse($this->date->format('Y-m-d').' '.$this->time_end); } private function syncTenantDateText(): void { $tenant = $this->tenant()->first(); if (! $tenant) { return; } $tenant->update([ 'event_date_text' => app(EventDateTextFormatter::class)->format( $tenant->eventDates()->pluck('date') ), ]); } }