Laravel では、投稿を削除しようとすると興味深いエラーが発生することがあります。 「いいね!」が関連付けられているもの。エラー メッセージは次のように宣言します:
"SQLSTATE[23000]: 整合性制約違反: 1451 親行を削除または更新できません: 外部キー制約が失敗しました (eliapi8.likes, CONSTRAINT likes_post_id_foreign FOREIGN KEY (post_id) REFERENCES 投稿 ( id))"
スキーマの分析
スキーマを調べると、like テーブルの post_id フィールドに外部キー制約が存在することがわかります。この制約により、類似レコードが関連付けられている場合、投稿レコードが削除されなくなります。
提案されたソリューション
解決策 1: onDelete('cascade') を使用する
like テーブルの移行ファイルに onDelete('cascade') を導入することで解決策が得られます。このディレクティブを使用すると、投稿レコードが削除されると、対応するすべての類似レコードが自動的に削除されます。
Schema::create('likes', function (Blueprint $table) { $table->integer('post_id')->unsigned(); $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade'); });
解決策 2: モデルの関係を活用する
If the Postモデルが Like モデルとの関係を維持する場合、次のアプローチを使用できます:
これらの解決策のいずれかを採用すると、問題のエラーが解決され、いいねのステータスに関係なく投稿を削除できるようになります。
以上がLaravel で「親行を削除または更新できません: 外部キー制約が失敗します」エラーを解決する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。