Laravel のデータベース制約エラー:「親行を削除または更新できません」
Laravel で発生する一般的なエラーは「SQLSTATE[23000]」です]: 整合性制約違反: 1451 親行を削除または更新できません。このエラーは、関連テーブルに子行がある親テーブルから行を削除しようとすると発生します。
あなたの場合、「いいね!」が関連付けられている投稿を削除しようとすると、このエラーが発生します。これは、likes テーブルには、posts テーブルを参照する外部キー制約があるためです。投稿を削除しようとすると、その投稿に依存するレコードが likes テーブルにまだ残っているため、投稿を削除できません。
このエラーを解決するには、onDelete('cascade' を使用するようにデータベース スキーマを変更します。 )。これにより、親レコードが削除されると、関連付けられた子レコードが自動的に削除されます。
onDelete('cascade') を使用して Likes スキーマを更新しました:
<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>
または、親レコードを削除する前に、関連付けられた子レコードを手動で削除できます。 Laravel モデルでは、次のコードを使用してこれを行うことができます:
<code class="php">$post->likes()->delete(); $post->delete();</code>
以上が記事の内容に適した質問ベースのタイトルをいくつか示します。 * **Laravel データベース制約エラー: いいね付きの投稿を削除できないのはなぜですか?** * **Laravel で親行を削除する: 方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。