Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使代码、数据库结构和数据库数据在修订之间保持同步_Php_Mysql_Laravel 5 - Fatal编程技术网

Php 使代码、数据库结构和数据库数据在修订之间保持同步

Php 使代码、数据库结构和数据库数据在修订之间保持同步,php,mysql,laravel-5,Php,Mysql,Laravel 5,这个问题困扰了我一段时间,对谷歌来说似乎是个棘手的问题 我正在寻找最好的(或者至少是一种体面的)方法来保持代码、数据库结构和数据库数据彼此同步。我目前正在使用Laravel 5,它为我提供了迁移和种子。第一种方法非常适合数据库结构更改。后者似乎可以,但不需要考虑时间 所以我在几个月前安装了这个laravel装置。它有20个表和一些播种机文件。 现在我重命名了现有表结构中的一列 当我从头开始创建我的Laravel站点时,我显然会先运行迁移,否则将根本没有表。之后,我运行seed并对更改的列执行in

这个问题困扰了我一段时间,对谷歌来说似乎是个棘手的问题

我正在寻找最好的(或者至少是一种体面的)方法来保持代码、数据库结构和数据库数据彼此同步。我目前正在使用Laravel 5,它为我提供了迁移和种子。第一种方法非常适合数据库结构更改。后者似乎可以,但不需要考虑时间

所以我在几个月前安装了这个laravel装置。它有20个表和一些播种机文件。 现在我重命名了现有表结构中的一列

当我从头开始创建我的Laravel站点时,我显然会先运行迁移,否则将根本没有表。之后,我运行seed并对更改的列执行insert查询失败


问题是:播种机不应该依赖于迁移的时间吗?或者,当数据库结构发生更改时,是否应该更改所有种子?一定有更好的办法,我错过什么了吗?如何做到这一点?

种子的问题是它们需要更新以反映当前模式,而不是它们产生时与之相关的任何历史模式

这就是为什么通常最好保持你的种子绝对最少。如果这是不可避免的有一个干净的种子数据库,你可以提供给任何人谁需要在这个项目上的工作。种子数据库的风险在于,它可能包含迁移中没有的修改,例如,当您删除迁移或应用从未提交到代码的迁移时


理想情况下,您的项目应该通过运行迁移和从种子构建来从头开始工作,这是一个您应该间歇测试以确保没有破坏任何东西的过程。

在更改表/迁移中的列名时,必须进行一些手动工作,我看不出有问题。对您的迁移和所有相关的其他部分(不仅是播种机,还有您的模型/工厂…需要反映这些变化)进行更改,确保一切正常,将其推给您的VCS并完成。典型的“相关”问题比我自己的搜索结果要好得多。回答我的问题,我想:不要使用种子,而是用于测试数据。谢谢。这不是我想要的种子。从现在起,我将使用迁移进行种子设定。有时,将“种子”数据放入迁移中是可行的,但要小心将迁移文件保持在低级别,并且永远不要依赖任何现有的特定模型。随着您的发展,您的应用程序模型将被创建和销毁,因此任何依赖于现有模型的迁移都会有问题。