我搜索了这个问题,我找到了一个只是更改存储引擎= 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');
});
}
与我实施的所有型号相似。所以建议我解决我的问题。
答案 0 :(得分:1)
您只是在创建表时尝试添加约束。但是既然你已经添加了这一行,看起来FK约束没有被添加/修改,因为该表已经存在:
if(!Schema::hasTable('cards')) {