【问题标题】:laravel seed rollback after seeding database播种数据库后的laravel种子回滚
【发布时间】:2017-11-27 12:37:10
【问题描述】:

我已使用php artisan db::seed 为我的数据库播种。有没有办法回滚我在数据库中播种的内容?

我似乎找不到像php artisan db::seed rollback 这样的命令。

【问题讨论】:

  • 您是否播种了一个新的(空)数据库?或者您是否希望撤消一些更改并恢复原始数据库?
  • @ERullmann,我希望撤消使用 db::seed 所做的更改
  • 如果您没有备份,那就更麻烦了。我不认为工匠会提供这样的本地服务。您可能想检查是否有关于作为种子一部分的 SQL 命令的日志。或者,如果您的所有对象都带有创建时间的时间戳,您可以删除自运行命令以来创建的所有内容。
  • @Aaron 我知道这已经过时了,但是崇敬/回滚种子绝对是疯狂的......如果你在生产中,你必须在另一个环境中测试所有东西(之前)......如果你是本地的(开发人员或类似的),在测试新功能之前一直备份数据库,或者只是使用php artisan migrate:fresh 测试和擦除数据库...实际上不需要 rollback 播种机。 ..这意味着播种机或类似设备的实施或使用不佳...解决方案在其他地方,而不是恢复播种机。
  • @matiaslauriti 完全相反,当您需要快速重置数据库时,我发现这种功能非常方便(在开发阶段) - 我的意思是只重置通过种子添加的东西而不是其他任何东西,并且不擦除整个数据库。

标签: php laravel rollback laravel-seeding


【解决方案1】:

在 Laravel 中使用 Undo Seeder。

当您安装 UndoSeeder 时,以下工匠命令可用:

db:seed-undo    Undo seeds in the seeds directory.
db:seed-refresh Undo seeds run seeds again.

更多Undo-Seeder

【讨论】:

    【解决方案2】:

    您还可以使用 migrate:refresh 命令为您的数据库播种,该命令还将回滚并重新运行您的所有迁移。此命令对于完全重建数据库很有用:

    php artisan migrate:refresh --seed

    Running Seeders

    【讨论】:

    • 是否可以运行此命令但指定播种器类? (如 php artisan db:seed --class='CustomSeeder' =
    【解决方案3】:

    如果你想清除某个表,那么只需 TRUNCATE 那个表,然后重新播种:

    php artisan db:seed --class=UsersTableSeeder
    

    这样简单的任务不需要额外的包。

    【讨论】:

      【解决方案4】:

      我一直在寻找其他东西,比如我运行过 php artisan db:seed,之后我想更改 UserSeeder 中的一些内容,比如更改电子邮件地址。

      因此,如果您想更改 Seeder 类中的某些内容并且您已经运行了 db:seed 命令。

      那么您所要做的就是根据您的选择更改您的 Seeder 类功能,然后重新运行该命令。

      php artisan db:seed
      

      它将根据您的更改再次为所有类播种。

      【讨论】:

        【解决方案5】:

        最简单的方法是进入你的

        数据库/播种器

        文件夹并手动删除要删除的文件,然后运行php artisan migrate:fresh

        【讨论】:

          猜你喜欢
          • 2015-09-25
          • 1970-01-01
          • 2015-02-04
          • 2018-05-20
          • 2016-02-10
          • 2021-04-01
          • 1970-01-01
          • 2014-03-01
          相关资源
          最近更新 更多