Laravel 将删除级联添加到现有 table
Laravel adding cascade on delete to an existing table
在我的 laravel 应用程序中,我有一个 table 称为 researches 和另一个称为 papers 。它们是一对多的关系,每项研究可以有一篇或多篇论文。在论文迁移文件中,我使用以下方法创建了外键约束:
//foreign key for the research model
$table->unsignedBigInteger('research_id');
$table->index('researach_id');
现在我想创建一个新迁移以添加级联 onDelete,以便在删除其父研究时删除论文。我该怎么做?我正在使用 laravel 5.1
编辑
所以答案与接受的答案非常相似,除了我必须先删除列然后添加外键。因为我还没有进入生产环境,所以删除该列不是问题,但如果您在生产环境中,您最终可能会搞乱数据库中数据的一致性。所以要小心
创建一个新的迁移并添加必要的外键约束以及外键数据为modified/deleted时要执行的操作。
$table->foreign('research_id')
->references('id')->on('researches')
->onDelete('cascade');
可以找到文档 here。
先删除外键再添加
$table->dropIndex('researach_id');
$table->foreign('research_id')
->references('id')->on('researches')
->onDelete('cascade');
参考:
Laravel -> Database: Migrations -> Foreign Key Constraints
在我的 laravel 应用程序中,我有一个 table 称为 researches 和另一个称为 papers 。它们是一对多的关系,每项研究可以有一篇或多篇论文。在论文迁移文件中,我使用以下方法创建了外键约束:
//foreign key for the research model
$table->unsignedBigInteger('research_id');
$table->index('researach_id');
现在我想创建一个新迁移以添加级联 onDelete,以便在删除其父研究时删除论文。我该怎么做?我正在使用 laravel 5.1
编辑
所以答案与接受的答案非常相似,除了我必须先删除列然后添加外键。因为我还没有进入生产环境,所以删除该列不是问题,但如果您在生产环境中,您最终可能会搞乱数据库中数据的一致性。所以要小心
创建一个新的迁移并添加必要的外键约束以及外键数据为modified/deleted时要执行的操作。
$table->foreign('research_id')
->references('id')->on('researches')
->onDelete('cascade');
可以找到文档 here。
先删除外键再添加
$table->dropIndex('researach_id');
$table->foreign('research_id')
->references('id')->on('researches')
->onDelete('cascade');
参考: Laravel -> Database: Migrations -> Foreign Key Constraints