YamlDriver for Zend2中的Doctrine2

时间:2013-02-08 22:31:17

标签: doctrine-orm zend-framework2 yaml

我正在使用DoctrineORMModule将Doctrine2与Zend2集成。当我使用各种示例中描述的AnnotationDriver时,一切正常。但是,我无法让YamlDriver工作。在我的module.config.php中,我试过了:

'doctrine' => array(
    'driver' => array(
        'ApplicationDriver' => array(
            'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
            'cache' => 'array',
            'paths' => array(__DIR__ . '/../src/Application/Entity')
        ), 
        'YamlDriver' => array(
            'class' => 'Doctrine\ORM\Mapping\Driver\YamlDriver',
            'cache' => 'array',
            'extension' => '.dcm.yml',
            'paths' => array(__DIR__ . '/../src/Application/Mapping')
        ),

        'orm_default' => array(
            'drivers' => array(
                'Application\Entity' => 'ApplicationDriver',
                'Application\Mapping' => 'YamlDriver'
            )
        )
    )
)

但是,EntityManager无法找到我的类。你给我一个如何使用yaml与doctrine2和zend2的工作实例?

1 个答案:

答案 0 :(得分:3)

我假设您的实体位于命名空间Application\Entity中:这意味着您应该为该命名空间分配驱动程序,如下例所示:

'doctrine' => array(
    'driver' => array(
        'MyYamlDriver' => array(
            'class' => 'Doctrine\ORM\Mapping\Driver\YamlDriver',
            'cache' => 'array',
            'extension' => '.dcm.yml',
            'paths' => array(__DIR__ . '/mappings')
        ),

        'orm_default' => array(
            'drivers' => array(
                'Application\Entity' => 'MyYamlDriver',
            )
        )
    )
)

基本上,配置将特定的命名驱动程序映射到您要使用的命名空间。在这种情况下,MyYamlDriver被指定用于处理命名空间Application\Entity

的任何映射