Php 为什么我在删除级联上的Laravel不起作用?
为什么我的Laravel“级联删除”不起作用?你能帮我吗Php 为什么我在删除级联上的Laravel不起作用?,php,mysql,laravel,Php,Mysql,Laravel,为什么我的Laravel“级联删除”不起作用?你能帮我吗 Schema::create('payments', function (Blueprint $table) { $table->bigIncrements('id'); $table->bigInteger('account_id'); $table->decimal('amount', 13, 2); $table->timestamps(); }); Schema::crea
Schema::create('payments', function (Blueprint $table) {
$table->bigIncrements('id');
$table->bigInteger('account_id');
$table->decimal('amount', 13, 2);
$table->timestamps();
});
Schema::create('revenues', function (Blueprint $table) {
$table->bigIncrements('id');
$table->bigInteger('account_id');
$table->decimal('amount', 13, 2);
$table->timestamps();
});
Schema::create('transactions', function (Blueprint $table) {
$table->bigIncrements('id');
$table->bigInteger('user_id');
$table->date('date');
$table->decimal('amount', 13, 2);
$table->unsignedBigInteger('payment_id');
$table->unsignedBigInteger('revenue_id');
$table->bigInteger('category_id');
$table->bigInteger('subcategory_id');
$table->string('remarks')->nullable();
$table->timestamps();
$table->foreign('payment_id')->references('id')->on('payments')->onDelete('cascade');
$table->foreign('revenue_id')->references('id')->on('revenues')->onDelete('cascade');
});
我的引擎是InnoDB。10.4.8-MariaDB,Laravel 6.写下:
$table->engine='InnoDB'代码>
在创建表之后,单独声明外键约束也是一种很好的做法:
Schema::table('transactions', function (Blueprint $table) {
$table->engine = 'InnoDB';
$table->foreign('payment_id')->references('id')->on('payments')->onDelete('cascade');
$table->foreign('revenue_id')->references('id')->on('revenues')->onDelete('cascade');
});
这样说:
$table->engine='InnoDB'代码>
在创建表之后,单独声明外键约束也是一种很好的做法:
Schema::table('transactions', function (Blueprint $table) {
$table->engine = 'InnoDB';
$table->foreign('payment_id')->references('id')->on('payments')->onDelete('cascade');
$table->foreign('revenue_id')->references('id')->on('revenues')->onDelete('cascade');
});
我认为我们需要查看交易表的其余部分。这张桌子上还有外键吗?发生了什么样的“不工作”?你有错误吗?它只是不删除吗?你看到MySQL中定义的层叠了吗?我正在删除交易记录,想使用层叠删除来删除付款记录。朋友,你误解了,删除层叠上的
意味着删除主表(付款/收入)中的任何行时,会删除从属表(交易)中的匹配行自动删除。这不是另一种方式;为此,您必须手动删除我认为我们需要查看事务表的其余部分。这张桌子上还有外键吗?发生了什么样的“不工作”?你有错误吗?它只是不删除吗?你看到MySQL中定义的层叠了吗?我正在删除交易记录,想使用层叠删除来删除付款记录。朋友,你误解了,删除层叠上的
意味着删除主表(付款/收入)中的任何行时,会删除从属表(交易)中的匹配行自动删除。这不是另一种方式;为此,您必须手动删除。谢谢您的建议。不过,我在控制器中添加了删除方法,以便可以删除与交易相关的付款和收入。谢谢您的建议。不过,我在控制器中添加了删除方法,以便可以删除与交易相关的付款和收入。