【问题标题】:Zend Framework 2 + Doctrine 2 Custom configuration with YML mapping not workingZend Framework 2 + Doctrine 2 使用 YML 映射的自定义配置不起作用
【发布时间】:2014-04-15 12:57:55
【问题描述】:

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

我想做的是通过手头写sql来创建数据库。
之后,我想做一个从数据库到“YML”的转换映射,而不是 php 注释。 所以,为了完成它,我想在 ZF2 模块中将这些 YML 映射信息转换为 Doctrine Entity。

我在作曲家中使用:

"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 操作上我使用生成此命令的 exec:

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

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

如何让Doctrine识别那些映射并毫无问题地转换为实体?

【问题讨论】:

  • 我没有使用ZF2控制台,现在只是使用学说控制台,zf2控制台如何帮助解决这个问题?

标签: php doctrine-orm zend-framework2 yaml


【解决方案1】:

在目标模块上

只需将 Application\Entity 更改为 Module\Entity aka 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')
        ),
    ),
),

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    相关资源
    最近更新 更多