Doctrine2存储库,多个dirs

时间:2011-03-29 02:53:41

标签: zend-framework doctrine doctrine-orm

我正在重构并将我的doctrine2 entites / repositories和代理放在不同的文件夹中。

我将它设置为读取多个实体目录,但我正在与zend框架集成,我的模型有一个_命名空间,Admin_Model_Repository_User而不是Application\Entity\Repository\User

任何人都有任何指针来管理代理和存储库的多个路径。

3 个答案:

答案 0 :(得分:0)

我不确定代理,但您当然可以轻松指定多个实体和存储库位置。

创建驱动程序时,可以传递单个路径字符串或数组。例如对于xml:

$driverImpl = new Doctrine\ORM\Mapping\Driver\XmlDriver(array(
    APPLICATION_PATH . '/modules/admin/models',
    APPLICATION_PATH . '/modules/default/models'
));

或者带注释:

$driverImpl = $config->newDefaultAnnotationDriver(array(
    APPLICATION_PATH . '/modules/admin/models',
    APPLICATION_PATH . '/modules/default/models'
));

这适用于任何映射驱动程序。或者你可以在创建$ driverImpl之后调用addPath()。

对于存储库,如果您在映射中指定了存储库类,只要自动装带器可以访问它,它就可以在任何位置工作。

答案 1 :(得分:0)

嘿谢谢,你让我走上正轨。我正在使用zend_auth通过会话存储来持久保存实体,而我正在调用它不喜欢的getIdentity()->getId()。工作正常而不分离实体dirs,但它没有问题atm,我只是将id保存到存储中并让我的类从id重新创建对象。

现在似乎正在工作,感谢您的帮助

答案 2 :(得分:0)

我的ZF2解决方案

文件module.doctrine_orm.local.config.php中的

'drivers' => array(
        'Admin' => array(
            'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
            'namespace' => 'Admin\Model',
            'paths' => array('module/Admin/src/Admin/Model')
        ),
        'Accounting' => array(
            'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
            'namespace' => 'Accounting\Model',
            'paths' => array('module/Accounting/src/Accounting/Model')
        )
    ),

'orm_driver_chain' => array(
                'parameters' => array(
                    'drivers' => array(
                        'application_annotation_driver' => $settings['drivers']['Accounting'],
                        'application_annotation_driver2' => $settings['drivers']['Admin']
                    ),
                    'cache' => $settings['cache']
                )
            ),