Datenbankeinschränkungsfehler in Laravel: „Eine übergeordnete Zeile kann nicht gelöscht oder aktualisiert werden“
Ein häufiger Fehler in Laravel ist „SQLSTATE[23000 ]: Verletzung der Integritätsbeschränkung: 1451 Eine übergeordnete Zeile kann nicht gelöscht oder aktualisiert werden.“ Dieser Fehler tritt auf, wenn versucht wird, eine Zeile aus einer übergeordneten Tabelle zu löschen, die untergeordnete Zeilen in einer zugehörigen Tabelle hat.
In Ihrem Fall tritt dieser Fehler auf, wenn Sie versuchen, einen Beitrag zu löschen, der mit „Gefällt mir“-Angaben verknüpft ist. Dies liegt daran, dass die Likes-Tabelle über eine Fremdschlüsseleinschränkung verfügt, die auf die Posts-Tabelle verweist. Wenn Sie versuchen, einen Beitrag zu löschen, kann er nicht gelöscht werden, da in der Likes-Tabelle noch Datensätze vorhanden sind, die davon abhängen.
Um diesen Fehler zu beheben, können Sie Ihr Datenbankschema so ändern, dass onDelete('cascade' ). Dadurch werden die zugehörigen untergeordneten Datensätze automatisch gelöscht, wenn der übergeordnete Datensatz gelöscht wird.
Aktualisiertes Likes-Schema mit onDelete('cascade'):
<code class="php">Schema::create('likes', function (Blueprint $table) { $table->increments('id'); $table->integer('post_id')->unsigned(); $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade'); });</code>
Alternativ Sie Sie können die zugehörigen untergeordneten Datensätze manuell löschen, bevor Sie den übergeordneten Datensatz löschen. In Ihrem Laravel-Modell können Sie dazu den folgenden Code verwenden:
<code class="php">$post->likes()->delete(); $post->delete();</code>
Das obige ist der detaillierte Inhalt vonHier sind einige fragenbasierte Titel, die zum Inhalt Ihres Artikels passen: * **Laravel-Datenbankeinschränkungsfehler: Warum kann ich einen Beitrag mit „Gefällt mir'-Angaben nicht löschen?** * **Übergeordnete Zeilen in Laravel löschen: Anleitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!