删除父记录时删除子记录

时间:2021-01-01 10:46:59

标签: laravel foreign-keys migration

我使用所有必要的外键检查和所有内容创建了我的表,但是当我通过删除父元素来测试它时,它的子元素没有被删除然后经过一些研究我发现我的默认引擎是 MyISAM 而 InnoDB 是需要外键工作。然后我创建了一个迁移并将所有表的默认引擎更改为 InnoDB,但仍然无法正常工作。 在关系视图中附上一张表的图片。是没有建立外键关系还是什么问题?

Relation view

而且我无法运行新的迁移,因为我有很多无法删除的数据。

我的迁移文件代码:

public function up()
{
    Schema::create('products', function (Blueprint $table) {
        $table->increments('id');
        $table->string('name', 127);
        $table->double('price', 8, 2)->default(0);
        $table->double('discount_price', 8, 2)->nullable()->default(0);
        $table->text('description')->nullable()->default('');
        $table->double('capacity', 9, 2)->nullable()->default(0);
        $table->double('package_items_count', 9, 2)->nullable()->default(0); // added
        $table->string('unit', 127)->nullable()->default(''); // added
        $table->boolean('featured')->nullable()->default(0);
        $table->boolean('deliverable')->nullable()->default(1); // added
        $table->integer('market_id')->unsigned();
        $table->integer('category_id')->unsigned();
        $table->timestamps();
        $table->foreign('market_id')->references('id')->on('markets')->onDelete('cascade')->onUpdate('cascade');
        $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade')->onUpdate('cascade');
    });
}

0 个答案:

没有答案