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

标签 php mysql laravel-5

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

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

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

当我从头开始我的 Laravel 站点时,我显然首先运行迁移,否则将根本没有表。之后,我运行了我的种子,但对已更改列的插入查询失败了。

问题来了:播种机不应该依赖于迁移的时间吗?还是应该在更改数据库结构时更改所有种子?必须有更好的方法,我错过了什么吗?应该怎么做?

最佳答案

种子的问题在于它们需要更新以反射(reflect)当前模式,而不是它们与生成时相关的任何历史模式。

这就是为什么通常最好尽量减少种子。如果不可避免地需要一个干净的种子数据库,您可以将其提供给需要从事该项目的任何人。种子数据库的风险在于它可能包含不在迁移中的修改,例如当您删除迁移或应用您从未提交给代码的迁移时。

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

关于php - 保持代码、数据库结构和数据库数据在修订之间同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51648364/

相关文章:

php - 在 PHP 5.3.3 上使用 Laravel 4 会遇到什么问题?

php - Mysql全文短题

php - "where"+ "or_where, "or_where"省略条件

php - 如何将 Twitter API 中的特殊字符存储到 MySQL 中?

mysql - Rspec 不删除 2 个特定的表

php - Laravel 5 修改器仅在我创建记录而不是更新记录时起作用

php - 如果单词错误或拼写错误或希腊单词得到英语结果,我怎样才能得到结果

php - 比较两个数组中的多个值 PHP

Laravel 使用assertJson 测试集合JSON 响应

PHP 和 MySQL - 使用数组填充选择下拉列表