我们的设置是这样的:
- 我们有为iOS和Android应用程序提供API的API。
- 我们有一个管理 API,用于为管理 Web 应用提供源
管理员,我的同事正在开发应用程序 API。
它们都使用相同的数据库和大多数相同的表。将它们合并到一个项目中不是一种选择,因为我们将部署到 Elastic Beanstalk 中,管理员不需要扩展,因为它将被少数人使用。
我们遇到的问题是处理迁移,我们得出了以下结论:
- 我们不能在项目中都有自己的迁移,因为版本不会加起来
- 如果我们只在其中一个项目上保留迁移(我们都有权访问这两个项目),则如果不重新部署另一个项目,就无法重新部署没有迁移的项目
- 如果我们制作一个只有迁移的第三个项目,我们将托管一个基本上不做任何事情的应用程序
虽然我可以想到解决此问题的黑客方法,但我们正在寻找一种最佳实践方法。
我建议选择创建仅具有迁移的第三个项目。这样,您可以将所有迁移保存在一个位置并避免不一致的问题,并将迁移与任一应用的部署分离。该应用程序不"做"任何事情的事实并不重要;无需部署额外的应用,只需从部署服务器运行迁移即可。您实际上不必仅为迁移创建整个Laravel项目;在Laravel之外使用Eloquent相当简单。本文给出了一个使用 Eloquent 查询生成器在 Laravel 之外运行迁移的示例。你也可以使用像Phinx这样的轻量级迁移工具,它提供了与Laravel的内置迁移类似的功能集,但依赖性最小。