2012-04-18 127 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: 
      ....