laDevel

时间:2018-01-26 06:18:20

标签: mysql 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');
            });
    }

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

1 个答案:

答案 0 :(得分:1)

您只是在创建表时尝试添加约束。但是既然你已经添加了这一行,看起来FK约束没有被添加/修改,因为该表已经存在:

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