Symfony2/Doctrine2:生成不属于bundle的实体

11

我正在尝试为我的Symfony 2应用程序生成实体。这些实体将由几个包(可能是几个应用程序)共享,因此我不希望它们属于一个包。

我想让它们在src/MyApp/Entity文件夹中。

我已经有了我的实体的YML,在src/MyApp/Entity/config/doctrine(class1.orm.yml,...)中存储。

我正在尝试使用doctrine:generate:entities任务生成相应的PHP类。

这是我的app/config/config.yml中的内容:

orm:
    auto_generate_proxy_classes: %kernel.debug%
    auto_mapping: false
    mappings: 
      AppRest: 
        type: yml 
        prefix: AppRest\Entity 
        dir: %kernel.root_dir%/../src/AppRest/Entity/config/doctrine

这是我用来生成实体的命令

php app/console doctrine:generate:entities AppRest/Entity

这是我得到的异常

[InvalidArgumentException]
Bundle "AppRest" does not exist or it is not enabled.
我希望让Doctrine理解我不是在尝试生成一个bundle中的实体。我尝试使用--path选项指定路径(--path=src/AppRest/Entity),但没有改变任何东西。请问有人可以帮忙吗?
编辑: 我移除了目录中的额外空格,问题得到了解决。必须指定路径选项。

1
我认为你很难让S2在捆绑包之外生成和使用D2实体。把它们放在自己的捆绑包中,问题就解决了。在多个捆绑包之间共享实体很容易。 - Cerad
使用Sf2与Doctrine2相结合,使您能够接受Sf2对Doctrine的实现... - AlterPHP
3个回答

4

实际上,我在上面的dir选项中只是漏了一个空格。现在它可以工作了,但我仍然想知道是否这是最好的方法。


3
Bundle的目的是将你的PHP代码与Symfony集成。你将更多的代码移出bundle,Symfony所依赖的就越少。 - Jakub Zalas
Bundle 是最好的选择。在进行得太远之前,尝试构建一些查询。你可能会遇到一些问题。 - Cerad
1
是的,我们重新评估了一下,并选择了一个包含实体的CoreBundle和引用该CoreBundle的专门的bundles的实现方案。 - David

1

-1

当您遇到此类错误时,请检查是否指定了捆绑包的快捷方式名称,而不是捆绑包目录的名称。例如,如果您有Acme \ DemoBundle,则其简称为AcmeDemoBundle。在这种情况下

orm:
    mappings: 
      DemoBundle: 
          ....

是不正确的。

正确的是:

orm:
    mappings: 
      AcmeDemoBundle: 
          ....

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接