我正在尝试找出一种智能的方法来实现我的捆绑包具有以下要求:
LogicABundle
AppBundle
LogicBBundle
的Bundle和一些实体
与LogicABundle
实体我知道希望能够从此设置中“部署”两个应用程序:
LogicABundle
和AppBundle
LogicABundle
,LogicBBundle
和AppBundle
问题是,对于第二个应用程序,我需要将一些实体从LogicABundle
关联到LogicBBundle
,这会导致第一个“部署”选项制动,如果我只有一个实体在{ {1}}指向LogicABundle
。
是否有独立部署这两个不同应用程序的智能解决方案? 以下是一个示例,以便更容易理解: namespace My \ LogicABundle \ Entity \ Game;
LogicBBundle
我希望能够仅使用LogicABundle在我的独立应用程序中使用Game类,而在我的第二个应用程序中,我需要具有消息关系的游戏实体。
答案 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的组功能)。
如果可以使用公共实体类并忽略这些额外关系,请提供进一步的信息。