【问题标题】:How to delete/refresh specific migration in laravel如何在 laravel 中删除/刷新特定迁移
【发布时间】:2017-07-30 13:01:34
【问题描述】:

我正在处理一个包含许多迁移的大型项目。我想在表中添加一列,并且不想为一个表维护多个迁移。我怎样才能做到这一点?有什么方法可以迁移:只刷新一次迁移?

【问题讨论】:

    标签: laravel cygwin


    【解决方案1】:

    我认为迁移旨在按顺序运行,因为每个迁移都可能依赖于之前的迁移。

    例如,migration#1 可以创建一个表,migration#2 可以向该表添加一些额外的字段。如果您尝试在每次都运行 #1 的情况下运行迁移 #2,那么它将失败。

    当您运行 artisan migrate 时,它​​只会运行尚未应用的迁移,除非您使用 migrate:refresh 在这种情况下,它将重置并重新运行所有迁移。

    如果您一心只想运行一个迁移 - 您可以暂时从目录中删除所有不想运行的迁移,然后运行迁移命令。然后将其余部分移回。这是一个 hacky 解决方法,但它可以解决问题。

    还有一种我认为可能最适合您的选择:

    php artisan migrate --path=/database/migrations/selected/
    

    您想要的迁移位于 /selected/ 目录中(您需要创建该目录)。

    【讨论】:

      【解决方案2】:

      您可以创建一个将添加新列的新迁移,即:

      Schema::table('users', function (Blueprint $table) { $table->string('additional_field'); });

      然后运行php artisan migrate

      这将使用新列更新您的表格,并且不会干扰其他表格。

      【讨论】:

        猜你喜欢
        • 2018-04-20
        • 2017-11-17
        • 2016-09-11
        • 2014-02-18
        • 2021-02-28
        • 2017-02-23
        • 2017-07-24
        • 2016-10-23
        • 1970-01-01
        相关资源
        最近更新 更多