ホームページ  >  記事  >  データベース  >  記事の内容に適した質問ベースのタイトルをいくつか示します。 * **Laravel データベース制約エラー: いいね付きの投稿を削除できないのはなぜですか?** * **Laravel で親行を削除する: 方法

記事の内容に適した質問ベースのタイトルをいくつか示します。 * **Laravel データベース制約エラー: いいね付きの投稿を削除できないのはなぜですか?** * **Laravel で親行を削除する: 方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-25 10:37:31179ブラウズ

Here are a few question-based titles that fit the content of your article:

* **Laravel Database Constraint Error: Why Can't I Delete a Post with Likes?**
* **Deleting Parent Rows in Laravel: How to Handle Foreign Key Constraints?**
* **SQLSTATE[23000]:

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。