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

Mih*_*rtu 4 php web-deployment laravel amazon-elastic-beanstalk

我们的设置是这样的:

  1. 我们有提供 iOS 和 Android 应用程序的 API
  2. 我们有一个 Admin API 来提供一个 Admin Web 应用程序

我正在开发管理员,我的同事正在开发应用程序 API。

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

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

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

虽然我可以想到解决这个问题的黑客方法,但我们正在寻找一种最佳实践方法。

bth*_*hen 5

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