Symfony2:有条件地创建实体表

时间:2016-03-03 23:34:27

标签: symfony doctrine-orm entity

我有一个包含实体的包。我希望能够以这样的方式配置此捆绑包,该实体将或将不会相关。因此,如果正确配置了bundle,那么实体表不应该用app/console doctrine:schema:update等创建,或者应该是 - 它应该依赖于配置。

如何有条件地"禁用"实体,因此其表格不会由app/console doctrine:schema:update创建?

2 个答案:

答案 0 :(得分:1)

您的方案要求您禁用auto_mapping,但默认情况下似乎设置为falsehttp://symfony.com/doc/current/reference/configuration/doctrine.html

接下来要做的是确保捆绑包的build功能有条件地添加了所需的DoctrineOrmMappingPass,如下所述:https://stackoverflow.com/a/26975083/1794894

尽可能see in the sourcebuild仅在缓存为空时执行,因此这是您可以执行此操作的地方。您还可以查看如何add compiler passes那里。

答案 1 :(得分:0)

我认为虽然也许你可以找到一种方法,但你的自我却很复杂。如果后端捆绑包是独立的,则始终可以选择安装它,从而创建或不创建它的实体。

您可以在Sonata软件包中找到一个示例,您可以根据需要管理用户,但如果您使用的是FOSUserBundle,则可以选择安装SonataUserBundle,然后告诉fos_user配置新类属于Sonata用户和因此,由于类继承,新实体将持久存在许多新属性,并且用户的所有crud操作都将在sonata视图中配置。 SonataUser还拥有自己的用户实体,可以独立使用。

我知道这不是你要求的,但可能你需要设法遵循这样的模型。