相关疑难解决方法(0)

Laravel迁移禁用外键检查的好方法

在进行laravel迁移时,我面临一些小小的不便.我使用Laravel 5.1.

由于存在许多具有许多关系的表,因此我可能无法重命名迁移文件,因此它们以正确的顺序运行,因此不会违反外键约束.这就是我过去做过的事情,而且非常不实用.

我现在正在做的是定义每个迁移,如下所示:

class CreateSomeTable extends Migration
{
    public function up()
    {
        DB::statement('SET FOREIGN_KEY_CHECKS=0;');
        // my table definitions go here
        DB::statement('SET FOREIGN_KEY_CHECKS=1;');
    }

    public function down()
    {
        DB::statement('SET FOREIGN_KEY_CHECKS=0;');
        // drop table
        DB::statement('SET FOREIGN_KEY_CHECKS=1;');
    }
}
Run Code Online (Sandbox Code Playgroud)

这样做的问题在于它编写起来很繁琐,并且使代码变得混乱.

我还考虑过创建两个虚拟迁移文件,其唯一目的是启用和禁用外键检查,我会以这样的方式命名它们,它们将在每次迁移的开始和结束时运行.

如果有一个优雅的解决方案,也可以将它应用于播种过程,因为这也是一个问题.

这显然是一个非常即兴的解决方案,我想问是否有更好的方法.有一些beforeMigrateafterMigrate我可以覆盖的方法或类似的规定?

如果没有,你怎么去做呢?

任何见解都会受到赞赏,我不喜欢我所说的所有选项.

php migration laravel

28
推荐指数
2
解决办法
2万
查看次数

标签 统计

laravel ×1

migration ×1

php ×1