我搜索了这个问题,我发现一个解决方案只是更改存储引擎= 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')) {