我是 Laravel 世界的新手,所以有一个问题。
有一种叫做迁移的东西。当我使用 YII 时,在迁移中我不仅可以轻松更改数据库的结构,还可以操作数据 - 更改、添加、从其他来源导入。非常方便:数据变更过程文件在GIT控制下,并且可以回滚和回滚变更。已完成的迁移将成为历史;没有机会意外地再次运行它。
当迁移到 Laravel 时,我正在考虑使用相同的做法,但在所有来源中我发现这种方法在 Laravel 世界中并不受欢迎。他们说迁移是为了管理数据库结构,仅此而已。
播种机?据我了解,这是为了在项目开始时填充数据库一次。我不再看到它们有任何正常用途。
你如何做一些典型的事情,比如在 Laravel 中更改数据库的内容?
谢谢你!
从责任和代码纯度的角度来看,这是正确的方法。在您的情况下,迁移负责结构,播种负责内容。没有别的。它更容易维护并且更容易测试。
至于生产中如何改数据库。实际上,我们是通过监控添加的内容并执行播种数据的命令
--class=....
,即进行特定的播种。如果您尝试简单地运行 db:seed,Laravel 将发出警告,表明您正在尝试为生产播种,并且可能会丢失所有战斗数据。可以做什么。(我没有在网上寻找现成的解决方案,我有自己的)。我们正在制作自己的数据播种服务,该服务将具有与迁移表相同的结构。而且这项服务只会执行那些尚未完成的支线。创建您自己的 db:product-seed 命令,它只会执行上传到服务器的最新文件。
有一个现成的包:timokoerber/laravel-one-time-operations。
他们的口号:
事实证明,它既具有技术性又易于管理,并且不违反结构。