播种数据库后的laravel种子回滚
Posted
技术标签:
【中文标题】播种数据库后的laravel种子回滚【英文标题】:laravel seed rollback after seeding database 【发布时间】: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 完全相反,当您需要快速重置数据库时,我发现这种功能非常方便(在开发阶段) - 我的意思是只重置通过种子添加的东西而不是其他任何东西,并且不擦除整个数据库。
【参考方案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
。
【讨论】:
以上是关于播种数据库后的laravel种子回滚的主要内容,如果未能解决你的问题,请参考以下文章