在项目和同一数据库之间共享实体

Ben*_*aux 2 symfony

因为我们没有很多选择,我们的团队计划使用 Symfony 2(一个旧的后台和一个新的 API)构建两个不同的应用程序,存储在两个不同的 GitHub 存储库中。但是只有一个数据库和共享的学说实体。

每个项目中可能有一个实体(因此是两个),“指向”数据库中的同一张表。

这绝对是个坏主意吗?是否有共享实体的解决方案?

Kub*_*cki 5

理论上你可以用 Symfony 包来做到这一点。

您可以使用您的所有实体和其他共享代码创建一个共享的“核心”包,并将其放入单独的存储库中。然后,您将能够将此捆绑包集成到每个应用程序的“AppBundle”中。

但是由于您的应用程序将共享同一个数据库,您需要确保两个应用程序始终使用完全相同版本的核心包。这可能会使维护变得有点困难。

一种更简单的方法可能是创建一个包含三个包的应用程序。一个用于业务逻辑,两个作为单独的表示层。

Symfony 4(编辑)

自从第 3 版问世以来,我就停止使用 Symfony,因此我在 Symfony 4 的“无捆绑”方法的背景下回答这个问题时有点犹豫,但我会尝试一下,因为它似乎是一个非常受欢迎的问题。

因此,即使您不再需要创建包,您仍然可以创建它们。而正是在面临什么样的文档建议,如果你的应用程序之间共享代码。我觉得这同样适用于 monorepos。

或者,您可以将整个持久层抽象为一个共享库。这将允许您在完全不同的框架之间共享相同的实体集。

  • symfony 3 就是这种情况。你如何看待 symfony 4 的方法? (6认同)