mysql – onDelete()在laravel中无法正常工作

我搜索了这个问题,我发现一个解决方案只是更改存储引擎= InnoDB,但我后续的孩子的行仍然没有被删除.

我的模型层次结构是……

Board -> Task -> Card -> [comments,files,labels];

如果我删除任务,那么与该任务相关联的所有卡都应该被删除,但在我的情况下,它不会发生.

在这里,我给你卡的样本模型…

 if(!Schema::hasTable('cards')){
        Schema::create('cards', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('task_id')->unsigned();
            $table->string('title');
            $table->string('discription')->nullable();
            $table->timestamps();
        });

        Schema::table('cards', function($table) {            
            $table->foreign('task_id')
            ->references('id')
            ->on('tasks')
            ->onDelete('cascade');
            });
    }

与我实施的所有型号相似.所以给我建议我解决我的问题.

最佳答案 您只是在创建表时尝试添加约束.但是因为你已经添加了这一行,所以看起来没有添加/修改FK约束,因为该表已经存在:

if(!Schema::hasTable('cards')) {
点赞