2012-11-29 30 views
0

我的文檔在這裏以下內容:生成與主義實體到不同的命名空間

這些命令

php app/console doctrine:mapping:convert xml ./src/Acme/BlogBundle/Resources/config/doctrine/metadata/orm --from-database --force 
php app/console doctrine:mapping:import AcmeBlogBundle annotation 
php app/console doctrine:generate:entities AcmeBlogBundle 

我在這裏看到了新的實體中」

Acme/BlogBundle/AcmeBlogBundle/Entity 

但我想知道我怎麼能添加到實體自己的命名空間這樣

Acme/BlogBundle/AcmeBlogBundle/Entity/Foo 
Acme/BlogBundle/AcmeBlogBundle/Entity/Bar 

這使我可以保持對實體Foo和Bar數據庫分離。

UPDATE:

還是應該像下面這樣的結構:

Acme/BlogBundle/AcmeBlogBundle/Foo/Entity 
Acme/BlogBundle/AcmeBlogBundle/Bar/Entity 

的思考?

+0

我對你到底在問什麼有點困惑。你想爲每個實體創建一個新的名字空間?這是沒有意義的。然後,Foo是/ Acme/BlogBu​​ndle/AcmeBlogBu​​ndle/Entity/Foo/Foo,Bar是/ Acme/BlogBu​​ndle/AcmeBlogBu​​ndle/Entity/Bar/Bar,它們都是它們自己命名空間中的唯一對象。這真的是你想要的嗎? – AmericanUmlaut

+0

我有多個數據庫,我想按數據庫組織實體,所以Foo數據庫應該進入Bar目錄中的Foo目錄和Bar數據庫。這只是爲了方便地確定實體與哪個數據庫相關 –

+0

哦,這是一個非常有趣的問題。我不知道,雖然:(我目前的項目也有多個數據庫,但他們有不同的數據相同的結構。 – AmericanUmlaut

回答

7

如果您查看文檔的How to work with Multiple Entity Managers and Connections部分,您會注意到您可以將您的捆綁實體綁定到一個或多個entity managers。它們中的每一個都與特定的數據庫連接有關。

舉例來說,如果我定義了兩個數據庫連接(first_connection和second_connection),我可以比添加兩個實體管理器如下,

entity_managers: 
    first_manager: 
     connection:  first_connection 
     mappings: 
      MyBundle: 
       dir:  Path/To/EntityFolder/Foo/ 
    second_manager: 
     connection:  second_connection 
     mappings: 
      MyBundle: 
       dir:  Path/To/EntityFolder/Bar/ 

則可以指定合適的實體管理器這兩個過程中使用在entity generation process的第一步,

php app/console doctrine:mapping:convert xml ./src/Acme/BlogBundle/Resources/config/doctrine/metadata/orm --from-database --force --em=first_manager --filter=MyTable 

注:--filter選項是用來讓你單獨生成你的實體。

php app/console doctrine:mapping:import AcmeBlogBundle annotation --em=first_manager --filter=MyTable 

php app/console doctrine:generate:entities AcmeBlogBundle 

然後根據綁定的連接將您的實體放入正確的文件夾中。

+0

必須錯過這個,謝謝 –

+0

[InvalidArgumentException] 捆綁「目錄」不存在或它是沒有啓用 –

+0

這有效,除了我有一個小問題:--filter = MyTable不起作用。如果我刪除選項,我得到數據庫中的所有表,如果我添加選項我得到:「沒有元數據類過程「,想法? –