如何处理使用相同数据库的两个独立 laravel 项目的迁移?

Posted

技术标签:

【中文标题】如何处理使用相同数据库的两个独立 laravel 项目的迁移?【英文标题】:How to handle migrations on two separate laravel projects that use the same database? 【发布时间】:2015-03-20 04:24:02 【问题描述】:

我们的设置是这样的:

    我们拥有为 iosandroid 应用提供数据的 API 我们有一个为 Admin Web 应用提供数据的 Admin API

我正在开发 Admin,我的同事正在开发应用 API。

它们都使用相同的数据库,并且大多数表都相同。将它们合并到一个项目中不是一种选择,因为我们将部署到 Elastic Beanstalk 并且管理员不需要扩展,因为它会被少数人使用。

我们遇到的问题是处理迁移,我们得出以下结论:

我们不能在我们的项目中都有自己的迁移,因为版本不会累加 如果我们只在其中一个项目上进行迁移(我们都可以访问这两个项目),那么如果不重新部署另一个项目,则无法重新部署没有迁移的项目 如果我们创建的第三个项目只有迁移,我们托管的应用程序基本上什么都不做

虽然我能想到 hacky 方法来解决此问题,但我们正在寻找最佳实践方法。

【问题讨论】:

【参考方案1】:

我建议选择创建仅具有迁移的第三个项目。这样,您可以将所有迁移保存在一个地方并避免不一致的问题,并将迁移与任一应用程序的部署分离。应用程序不“做”任何事情的事实并不重要;您不需要部署额外的应用程序,只需从部署服务器运行迁移。您实际上不必为迁移创建整个 Laravel 项目;在 Laravel 之外使用 Eloquent 相当简单。 This article 给出了一个使用 Eloquent 查询构建器在 Laravel 之外运行迁移的示例。您还可以使用像 Phinx 这样的轻量级迁移工具,它提供了与 Laravel 的内置迁移类似的功能集,但依赖关系最小。

【讨论】:

以上是关于如何处理使用相同数据库的两个独立 laravel 项目的迁移?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理具有相同实体 ID 的两个 IDP

如何处理同一站点的两个版本

如何处理自定义 UITableViewCell XIB 中的两个视图?

如何处理 JPA @OneToOne 映射中的“孤立”行

蓝绿部署技术如何处理数据变化? [关闭]

如何处理相同的哈希与相同的密钥?