Doctrine2 репозитории, несколько каталогов - PullRequest
0 голосов
/ 29 марта 2011

Я занимаюсь рефакторингом и помещаю свои doctrine2 entites / repositories и, возможно, прокси в отдельные папки.

Я настроил его для чтения нескольких каталогов сущностей, но я интегрируюсь с Zend Framework, и мои модели имеют_ пространство имен, Admin_Model_Repository_User вместо Application\Entity\Repository\User.

У любого есть указатели для управления несколькими путями для прокси и репозиториев.

Ответы [ 3 ]

0 голосов
/ 29 марта 2011

Эй, спасибо, ты вывел меня на правильный путь.Я использовал zend_auth для сохранения сущности через хранилище сеансов, и я звонил getIdentity()->getId(), что ему не понравилось.Работает нормально, не разделяя каталоги сущностей, но это не проблема, я просто сохранил идентификатор в хранилище и заставил мой класс воссоздать объект из идентификатора.

Кажется, он работает сейчас, спасибо за помощь

0 голосов
/ 20 мая 2012

Мое решение для 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']
                )
            ),
0 голосов
/ 29 марта 2011

Я не уверен насчет прокси, но вы, конечно, можете легко указать несколько объектов и хранилищ.

При создании драйвера вы можете передать либо одну строку пути, либо массив. Например, для 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'
));

Это работает на любом картографическом драйвере. Или вы можете вызвать addPath () для $ driverImpl после его создания.

Для репозиториев, если вы указываете класс репозитория в отображении, поскольку автозагрузчик может получить к нему доступ, он будет работать в любом месте.

...