如何使用相关实体独立设置Symfony2 Bundles

时间:2012-09-10 12:59:54

标签: php symfony doctrine-orm

我正在尝试找出一种智能的方法来实现我的捆绑包具有以下要求:

  1. 我有一个名为LogicABundle
  2. 的逻辑分区
  3. 我有一个捆绑包含常见的东西作为设计和菜单调用 AppBundle
  4. 我有另一个带有逻辑LogicBBundle的Bundle和一些实体 与LogicABundle实体
  5. 相关

    我知道希望能够从此设置中“部署”两个应用程序:

    1. 应用程序一使用LogicABundleAppBundle
    2. 第二个使用LogicABundleLogicBBundleAppBundle
    3. 问题是,对于第二个应用程序,我需要将一些实体从LogicABundle关联到LogicBBundle,这会导致第一个“部署”选项制动,如果我只有一个实体在{ {1}}指向LogicABundle

      是否有独立部署这两个不同应用程序的智能解决方案? 以下是一个示例,以便更容易理解: namespace My \ LogicABundle \ Entity \ Game;

      LogicBBundle

      我希望能够仅使用LogicABundle在我的独立应用程序中使用Game类,而在我的第二个应用程序中,我需要具有消息关系的游戏实体。

2 个答案:

答案 0 :(得分:2)

我不确定,但我遇到了同样的问题,我发现:http://symfony.com/en/doc/current/cookbook/doctrine/resolve_target_entity.html

希望不要迟到;)

答案 1 :(得分:1)

如果您正在使用Git(或SVN或其他源控制工具),我建议创建两个单独的Symfony2应用程序(每个应用程序位于其存储库中)。此外,每个捆绑包都有自己的存储库,我会使用Composer正确设置依赖关系,然后安装捆绑包(LogicABundle,LogicBBundle,AppBundle)作为供应商。

更新:由于不同的bundle需要不同的实体,因此一种方法是在bundle中指定只需要基本实体的基本实体,并使用其他关系扩展另一个bundle中的实体(见Doctrine Inheritance Mapping)。

例如,在LogicABundle中定义EntityA并在LogicBBundle中定义EntityA2,其中EntityA2扩展EntityA并向实体添加其他关系。

更新:由于您没有提供其他信息,为什么需要这样做,我现在只能猜测,但另外一个想法就是在两个捆绑包中简单地使用相同的实体。 LogicABundle中的逻辑只会忽略其他关系。我认为这是大多数开发人员在你的情况下会做的事情。

例如,考虑提供FOSUserBundle等常用功能的bundle。该软件包定义了一些模型,但并非每个使用FOSUserBundle的应用程序都必须使用实体的每个字段(在我正在开发的应用程序中,我完全忽略了FOSUserBundle的组功能)。

如果可以使用公共实体类并忽略这些额外关系,请提供进一步的信息。