Zend Framework 2+Doctrine 2带有YML映射的自定义配置不起作用


Zend Framework 2 + Doctrine 2 Custom configuration with YML mapping not working

我正在尝试与使用新项目不同的配置。

我想做的是通过手头写sql来创建一个数据库
之后,我想做一个从数据库到"YML"的转换映射,而不是php注释。因此,为了完成它,我想将这些YML映射信息转换为ZF2模块中的条令实体。

我在作曲家中使用:

"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

谁将YML映射数据正确保存到文件夹模块/Gear/src/Gear/YML中这正是我在模块配置文件中放入"application_enties_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识别我将元数据类放在哪里,以避免这些错误并继续项目。我将使用YML实体,因为这是我教非php程序员编写实体的最佳方式。因此,与YML合作非常重要。

如何使条令认识到这些映射并毫无问题地转化为实体?

在目标模块上

只需将Application''Entity更改为Module''Entity(又名Gear''Entity),它就可以工作了!

'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')
        ),
    ),
),