'boolean', 'last_used_at' => 'datetime', ]; } public function groups(): HasMany { return $this->hasMany(SongGroup::class); } public function arrangements(): HasMany { return $this->hasMany(SongArrangement::class); } public function serviceSongs(): HasMany { return $this->hasMany(ServiceSong::class); } /** * Letztes Service-Datum, in dem dieser Song verwendet wurde. * Berechnet über die service_songs -> services Verknüpfung. */ public function lastUsedInService(): Attribute { return Attribute::get(function () { $latestDate = $this->serviceSongs() ->join('services', 'services.id', '=', 'service_songs.service_id') ->max('services.date'); if ($latestDate === null) { return null; } // SQLite gibt date-Spalten als 'YYYY-MM-DD 00:00:00' zurück return substr((string) $latestDate, 0, 10); }); } }