2

我正在使用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 找不到我的课程。Cam,你给我一个工作示例,说明如何将 yaml 与学说 2 和 zend2 一起使用?

4

1 回答 1

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

于 2013-02-09T01:47:19.037 回答