【问题标题】:laravel error in deleting the parent row data [duplicate]删除父行数据时的laravel错误[重复]
【发布时间】:2018-03-20 06:26:55
【问题描述】:

我想删除广告系列但不删除广告系列并出现以下错误。

SQLSTATE[23000]:违反完整性约束:1451 无法删除或 更新父行:外键约束失败 (demopurpose_fundraising.campaign_product, 约束 campaign_product_campaign_id_foreign 外键 (campaign_id) 参考campaign (id)) (SQL:从campaign 中删除id = 60)

广告系列表架构:

Schema::create('campaign', function (Blueprint $table) {
            $table->engine='InnoDB';
            $table->increments('id');
            $table->integer('users_id')->unsigned();
            $table->foreign('users_id')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade');
            $table->string('campaign_name');
            $table->float('campaign_goal',8,2);
            $table->string('discription',400);
            $table->string('image');
            $table->string('category');
            $table->date('start_date');
            $table->date('end_date');
            $table->float('total_fund',8,2);
});

campaign_product 表架构:

Schema::create('campaign_product', function (Blueprint $table) {
            $table->engine='InnoDB';

            $table->increments('id');
            $table->integer('campaign_id')->unsigned();
            $table->foreign('campaign_id')->references('id')->on('campaign')->onDelete('cascade')->onUpdate('cascade');

            $table->integer('product_id')->unsigned();
            $table->foreign('product_id')->references('id')->on('product')->onDelete('cascade')->onUpdate('cascade');
        });

【问题讨论】:

  • 如果其他表中有子项,则不能删除父项。你可以做的是创建一个级联方法。这样 MySQL 将首先删除子条目,然后删除要删除的父行
  • 我是 laravel 的新手。请提供它的代码..@ReyNorbertBesmonte

标签: php mysql database sql-delete laravel-5.5


【解决方案1】:

您应该更新您的迁移以在删除时执行某些操作。见:https://laravel.com/docs/4.2/schema#foreign-keys

例如(来自文档)

$table->foreign('user_id')
      ->references('id')->on('users')
      ->onDelete('cascade');

根据您选择的数据库,可能还有其他选项,例如 set null。

这里的问题是你设置了一个约束,但你却惊讶于被约束。设置 onDelete 行为,以便 db 为您处理。

【讨论】:

  • 我也在我的模式中使用了 ondelete,它无法删除给我同样的错误,当我使用这个 $user->activities()->delete();然后删除用户及其所有数据,但当我简单地使用 $user->delete();它显示错误请帮助
猜你喜欢
  • 2018-11-07
  • 1970-01-01
  • 2015-03-09
  • 2014-11-02
  • 2019-06-03
  • 2019-01-10
  • 2016-07-10
  • 2014-09-28
  • 1970-01-01
相关资源
最近更新 更多