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

时间:2016-10-27 14:20:47

标签: symfony

因为我们没有很多选择,所以我们的团队计划使用Symfony 2(旧的Back-Office和新的API)构建两个不同的应用程序,存储在两个不同的Github存储库中。但是只有一个数据库和共享的学说实体。 每个项目中有一个实体(因此是两个),“指向”数据库中的同一个表。

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

1 个答案:

答案 0 :(得分:4)

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

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

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

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

Symfony 4(编辑)

当我从第3版出来后停止使用Symfony时,我对Symfony 4的'无捆绑'方法的回答有点犹豫,但我会试一试,因为它似乎是一个非常受欢迎的问题。

因此,即使您不再需要创建捆绑包,仍然可以创建它们。如果您在应用程序之间共享代码,那么the docs推荐它。我觉得这同样适用于monorepos。

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