2014-04-15 62 views
1

我正在嘗試使用新項目的不同配置。Zend Framework 2 + Doctrine 2 YML映射不工作的自定義配置

我想要做的是通過手寫sql來創建數據庫。
之後,我想做一個從數據庫到「YML」而不是PHP註釋的轉換映射。 因此,爲了完成它,我想將這些YML映射信息轉換爲ZF2模塊內的Doctrine實體。

我使用的作曲家:

"doctrine/doctrine-orm-module" : "0.7.0", 
"doctrine/doctrine-module" : "0.7.*", 

在global.php配置

'doctrine' => array(
    'connection' => array(
     // default connection name 
     'orm_default' => array(
      'driverClass' => 'Doctrine\DBAL\Driver\PDOMySql\Driver', 
      'params' => array(
       'host'  => 'localhost', 
       'port'  => '3306', 
       'user'  => 'root', 
       'password' => '****', 
       'dbname' => 'gear', 
       'charset' => 'utf8' 
      ), 
     ) 
    ) 
), 

在目標模塊

'doctrine' => array(
    'driver' => array(
     /* This is where you can change the Mapping Driver */ 
     'orm_default' => array(
      'drivers' => array(
       'Application\Entity' => 'application_entities_yaml' 
      ), 
     ), 
     'application_entities_yaml' => array(
      'class' => 'Doctrine\ORM\Mapping\Driver\YamlDriver', 
      'paths' => array(__DIR__ . '/../src/' .__NAMESPACE__. '/Yml') 
     ), 
    ), 
), 

我期待使用自定義的地方放YML註釋,在一個ZF2 Action上,我使用一個exec來生成這個命令:

vendor/doctrine/doctrine-module/bin/doctrine-module orm:convert-mapping --namespace="Gear\\Entity\\" --force --from-database yml module/Gear/src/Gear/Yml 

誰保存correcty的YML數據映射到該文件夾​​模塊/齒輪/ src目錄/齒輪/陽明 正是我在模塊配置文件放入「application_entities_yaml」的路徑。

但是當我嘗試最終創建該實體來完成工作,用這個命令:

vendor/doctrine/doctrine-module/bin/doctrine-module orm:generate-entities module/Gear/src/ 

vendor/doctrine/doctrine-module/bin/doctrine-module orm:generate-entities --generate-annotations=1 module/Gear/src/ 

我剛:

'No Metadata Classes to process.' 

我需要發現如何讓Doctrine識別我放置元數據類的位置,以避免這種錯誤並繼續進行e項目。我將使用YML實體cuz是我教非'php'程序員寫程序的最好方法。因此使用YML非常重要。

如何讓學說認識那些映射並轉換爲實體沒有問題?

+0

我沒有使用ZF2控制檯,現在只使用doctrine控制檯,zf2控制檯如何解決此問題? –

回答

1

在目標模塊

只需更改應用程序\實體到模塊\實體又名齒輪\實體和它的作品!

'doctrine' => array(
    'driver' => array(
     /* This is where you can change the Mapping Driver */ 
     'orm_default' => array(
      'drivers' => array(
       'Gear\Entity' => 'application_entities_yaml' 
      ), 
     ), 
     'application_entities_yaml' => array(
      'class' => 'Doctrine\ORM\Mapping\Driver\YamlDriver', 
      'paths' => array(__DIR__ . '/../src/' .__NAMESPACE__. '/Yml') 
     ), 
    ), 
),