2012-12-07 33 views
4

好吧,我有教義最後一個問題:生成:實體命令學說生成實體命名空間問題?

我運行下面的命令,我得到

/src/MyNamespace/Bundle/MyNamespaceBundle/Resources/config/doctrine/metadata/orm 

comamnd預期的文件(S):

php app/console doctrine:mapping:convert yml ./src/MyNamespace/Bundle/MyNamespaceBundle/Resources/config/doctrine/metadata/orm --from-database --em=my_manager --filter=TblReports --verbose 

我看到了TblReports.orm.yml文件,第一行是:

TblReports 

命令:(這應該是註釋而不是yml? )

php app/console doctrine:mapping:import MyNamespaceBundle yml --em=my_manager --filter=TblReports 

我運行上面的命令,我在這裏

/src/MyNamespace/Bundle/MyNamespaceBundle/Resources/config/doctrine/ 

同名得到文件,從第一個命令生成的第一個文件,只是在不同的位置,第一行(我假設是命名空間)

TblReports.orm.yml 

現在的第一行是:

MyNamespace\Bundle\MyNamespaceBundle\Entity\TblReports 

,但我認爲它需要

MyNamespace\Bundle\MyNamespaceBundle\Entity\Reports\TblReports 

現在我運行一個命令

php app/console doctrine:generate:entities MyNamespaceBundle --path=src --no-backup 

我得到這個錯誤

[RuntimeException]              
    Bundle "MyNamespaceBundle" does not contain any mapped entities. 

如果我像這樣運行

命令
php app/console doctrine:generate:entities MyNamespaceBundle:Reports --path=src --no-backup 

我得到這個錯誤(但命名空間看起來是正確的)

[RuntimeException]                     
    Namespace "MyNamespace\Bundle\MyNamespaceBundle\Entity\Reports" does not contain any mapped entities. 

這裏是my_manager(config.yml)

# Doctrine Configuration 
doctrine: 
    dbal: 
     default_connection: my_database 
     connections: 
     my_database: 
      driver: pdo_pgsql 
      port:  5432 
      dbname: tbl_reports 
      user:  foo_user 
      password: foo_pass 
      charset: UTF8 
      mapping_types: 
      bit: string 

    orm: 
     auto_generate_proxy_classes: "%kernel.debug%" 
     default_entity_manager: my_manager 
     entity_managers: 
      my_manager: 
       connection: my_database 
       mappings: 
        MyNamespaceBundle: 
         mapping: true 
         dir: Entity/Reports 

在config_dev.yml(我用dev和督促YML文件來控制主機(S)我可以連接到)

# Doctrine Configuration 
doctrine: 
    dbal: 
     connections: 
     my_database: 
      host: 172.0.0.1 

問題:

  1. 爲什麼我得到這個錯誤?
  2. 我該如何解決?

相關問題:

更新#1:

玉以及我跑第二個命令爲annotation,而不是yml和文件被生成於:

MyNamespace\Bundle\MyNamespaceBundle\Entity 

命令:

php app/console doctrine:mapping:import MyNamespaceBundle annotation --em=my_manager --filter=TblReports 

我跑學說:生成:實體(雙向),並仍然得到了錯誤。我決定將這些文件移動到該目錄

MyNamespace\Bundle\MyNamespaceBundle\Entity\Reports 

我跑學說:生成:實體阿恩(雙向),並仍然得到了錯誤。 我查看了文件中的命名空間,並看到它指向了工作命名空間。我更新來自:

MyNamespace\Bundle\MyNamespaceBundle\Entity\TblReports 

MyNamespace\Bundle\MyNamespaceBundle\Entity\Reports\TblReports 

運行此命令

php app/console doctrine:generate:entities MyNamespaceBundle:Reports --path=src --no-backup 

和現在的作品

Generating entities for namespace "MyNamespace\Bundle\MyNamespaceBundle\Entity\Reports" 

所以我想問題#3:

  1. 如何獲得第二個命令以在導入中添加正確的名稱空間?

我試過,但沒有骰子

php app/console doctrine:mapping:import MyNamespaceBundle:Reports annotation --em=my_manager --filter=TblReports 

文檔:

來源:

回答

0

你的第一線需要,以結束與:如:

MyNamespace\Bundle\MyNamespaceBundle\Entity\TblReports: 
    <yml> data. 

你似乎是混合陽明註解。挑一個並堅持下去。我不使用註釋,所以剩下的就是yml註釋。 doctrine:映射:導入/轉換與yml選項生成yml文件將yml文件放入Bundle/Resources/config/doctrine中。

然後使用yml文件的集合來創建實體類,並將它們放在每個yml文件中指定的位置,默認位置爲NamespaceBundle \ Entity。

+0

謝謝,我明白這一點。我該如何改變這個名字空間?從NamespaceBundle \ Entity到NamespaceBundle \ Another \ Namespace \ Entity –

+0

將教條文件放入與該命名空間相關的目錄中,並在那裏生成它們? – Lighthart

+0

你能列出所有三個命令嗎?我正在嘗試你的建議,但我得到的只是錯誤。訂單是否重要? –