Ich habe ein Turnier-Modell, das eine belongsToMany Beziehung mit einem Session-Modell enthält:Laravel löschen Sie alle belongsToMany Beziehungen in belongsToMany Beziehung
class Tournament extends Model{
public function sessions(){
return $this->belongsToMany(Session::class, 'tournament_has_sessions');
}
}
meine Sitzungen Modell Dann enthält eine belongsToMany Beziehung mit dem User-Modell:
class Session extends Model{
public function users(){
return $this->belongsToMany(User::class, 'session_has_users');
}
}
Wenn ich jetzt ein Turnier lösche, möchte ich alle Sitzungen und alle Informationen in der Tabelle session_has_users damit löschen.
Ich habe versucht:
$tournament->sessions()->with('users')->delete(); -- < This
$tournament->sessions()->delete();
$tournament->users()->detach();
$tournament->delete();
Aber es does 't Arbeit. Die Daten in der Tabelle session_has_users weiterhin bestehen
Ich weiß, ich so etwas tun könnte:
DB::table('session_has_users')->whereIn('session_id', $this->sessions()->pluck('id'))->delete();
Aber ist es eine effizientere/handlich (oder sogar Alternative, wenn nicht effizienter) Weg, dies zu erreichen?
Vielen gesetzt, ich glaube, ich aussehen In der referenziellen Aktion ON DELETE CASCADE sprechen Sie von – Joas