外部キー制約の問題がある投稿を削除または更新できない
この質問は、いいね! が関連付けられている投稿を削除しようとすると発生します。その結果、エラーが発生します: 「SQLSTATE[23000]: 整合性制約違反: 1451 親行を削除または更新できません...」
問題の原因
Post スキーマと Like スキーマが 2 つのテーブル間に外部キー制約を確立すると、Like テーブルの post_id は Posts テーブルの ID を参照します。 「いいね!」がリンクされた投稿が削除されると、投稿を削除すると「いいね!」テーブルに孤立した「いいね!」が残るため、この制約に違反します。
解決策のオプション 1: onDelete('cascade')
解決策の 1 つは、Like 移行ファイルで onDelete('cascade') を使用することです。これは、Posts テーブルからレコードが削除されるときに、Like テーブル内のすべての対応するレコードも削除する必要があることを指定します。
Schema::create('likes', function (Blueprint $table) { $table->integer('post_id')->unsigned(); $table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade'); });
解決策のオプション 2: 関連レコードの削除
また、Post モデルから Like モデルへの関係を定義している場合は、投稿自体を削除する前に、関連付けられた Like を削除できます。
$post->likes()->delete(); $post->delete();
これらのソリューションのいずれかを実装すると、外部キー制約エラーを解決し、「いいね!」が関連付けられた投稿を正常に削除できます。
以上が関連する「いいね!」を持つ投稿を削除するときに外部キー制約の問題を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。