Symfony2管理多个数据库(来自其他框架)

时间:2014-03-20 11:06:05

标签: php symfony doctrine-orm

我有问题。我的客户希望在一个symfony框架包中拥有一个网站,并将CMS集成到另一个Symfony框架(公司的服务面板)中。

所以,我们有Symfony A和B.

现在网站上有一个博客(Symfony A)和其他一些动态页面。所有删除,添加和更新内容都需要通过表单等进入服务面板(Symfony B)。

我知道我可以使用多个实体管理器,但只有在网站捆绑包放置在服务面板框架(Symfony B)中时才能使用,因为映射。我认为这是不可能的,但他们真的希望将CMS放在他们的服务面板中,将网站放在另一个symfony框架实例中。

是否有一个遥控器'解决方案,以便Symfony B(服务面板)可以更改和管理网站数据库(Symfony A)而不将网站包(Symfony A)迁移到Symfony B?该网站将与服务面板在同一台机器上运行。唯一的区别是它们彼此完全分开。

如果我不够清楚,请告诉我。我试图尽可能清楚。

希望有人能帮助我解决这个问题。

1 个答案:

答案 0 :(得分:0)

因此,我们想要更新博客。

Symfony A会处理这些请求:

GET / blog / 42 - 返回博客42的json rep

PUT / blog / 42 - 接受并更新博客42

够容易。 FOSRestBundle和JMSSerializerBundle可以帮助解决一些问题。

所以Symfony B使用curl(可能)到GET / blog / 42并将json数据转换为php数组。

此时你有一个重大决定。如果实体简单且稳定,Symfony B可以只使用数组表示。 Symfony表单接受数组没问题。所以这可能就是你所需要的。

但是,如果您想将数组数据转换为与Symfony A匹配的真实Blog对象,那么您需要做出更多决定。 Symfony A实体实际上只是普通对象。您可以调整Symfony B的自动加载,以便它可以看到Symfony A实体。所以B可以从A获取实体(然后将数组数据映射到实体)而不需要任何直接链接。 Autoload只需知道Symfony A实体所在的位置。

或者您可以更进一步制作一个BlogModelBundle,其中定义了博客实体(没有任何学说内容)。然后,您将有两个应用程序加载此捆绑包。然后,A应用程序将扩展模型并添加学说2的东西。 B应用程序将使用json水合模型。这可能是长期的最佳方法。