belongsToMany(Group::class); } /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function entries(): HasMany { return $this->hasMany(Entry::class); } /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function attempts(): HasMany { return $this->hasMany(Attempt::class); } /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function overrides(): HasMany { return $this->hasMany(Override::class); } public static function boot() { parent::boot(); static::deleting(static function (Door $door) { // Detach all groups $door->groups()->detach(); // Delete all entries /** @var \App\Entry $entry */ foreach ($door->entries() as $entry) { $entry->delete(); } // Delete all attempts /** @var \App\Attempt $attempt */ foreach ($door->attempts() as $attempt) { $attempt->delete(); } // Delete all overrides /** @var \App\Override $override */ foreach ($door->overrides() as $override) { $override->delete(); } }); } }