2012-04-18 125 views
10

我正在尝试为我的Symfony 2应用程序生成实体。这些实体将被几个包(也可能是几个应用程序)共享,因此我不希望它们属于一个包。 我希望它们位于src/MyApp/Entity文件夹中。Symfony2/Doctrine2:生成包之外的实体

我已经有YML我的实体,存储在SRC/MyApp的/实体/配置/学说(class1.orm.yml,...)

我试图使用生成corresonding PHP类学说:生成:实体任务

以下是我在我的应用程序/配置/ 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. 

我要让教义明白,我不是要生成实体塔是一个包。我也尝试指定--path选项(--path = src/AppRest/Entity),但它没有改变任何东西。

任何人都可以帮忙吗?

编辑

我在目录,它解决了这个问题取出额外的空间。路径选项必须指定

+1

我不认为你会有多大的运气越来越S2产生和使用一个包之外的D2实体。只要把它们放在他们自己的捆绑中,并完成它。在多个包中共享实体很容易。 – Cerad 2012-04-18 17:55:04

+0

+1使用Sf2与Doctrine2结合使您接受Sf2的Doctrine实现... – AlterPHP 2012-04-19 09:06:05

回答

3

其实,我只是在上面的dir选项中缺少空格。这现在可行,但我仍然想知道这是否是最好的选择。

+3

Bundle的目的是将您的PHP代码与Symfony集成。您在捆绑之外移动的代码越多,Symfony所依赖的代码就越少。 – 2012-04-19 11:50:03

+0

Bundle是最好的选择。尝试建立一些查询之前,你太过分了。你可能会遇到一些问题。 – Cerad 2012-04-19 12:11:30

+1

是的,我们已经重新评估过了,我们选择了一个带有CoreBundle的实现,它包含我们的实体以及专用的Bundles,它们指向CoreBundle – David 2012-04-20 06:37:16

-1

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

orm: 
    mappings: 
     DemoBundle: 
      .... 

是不正确的。

正确的是:

orm: 
    mappings: 
     AcmeDemoBundle: 
      ....