如何处理使用同一数据库的两个单独 laravel 项目的迁移


How to handle migrations on two separate laravel projects that use the same database?

我们的设置是这样的:

  1. 我们有为iOS和Android应用程序提供API的API。
  2. 我们有一个管理 API,用于为管理 Web 应用提供源
我正在开发

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

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

我们

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

  • 我们不能在项目中都有自己的迁移,因为版本不会加起来
  • 如果我们只在其中一个项目上保留迁移(我们都有权访问这两个项目),则如果不重新部署另一个项目,就无法重新部署没有迁移的项目
  • 如果我们制作一个只有迁移的第三个项目,我们将托管一个基本上不做任何事情的应用程序

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

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