Как мне зарегистрировать свой собственный Doctrine Repository в контейнере как сервис? (Рамки агностика)

Н.Б. Я не используя платформу Symfony. Я использую контейнерный компонент Symfony вместе с Doctrine ORM, Я создал собственное репо и хочу зарегистрировать его как сервис. Я не использую какие-либо рамки.

class FooRepository extends EntityRepository
{
//...
}

Вот что я возиться в контейнере:

<services>
<!--<service id="doctrine" class="Doctrine\ORM\Repository\DefaultRepositoryFactory" />-->
<!--<service id="entity_manager" class="Doctrine\ORM\EntityManager"/>--><service id="doctrine" class="Doctrine\ORM\EntityManager"/>
<service id="app.org_1_repository" class="Doctrine\ORM\EntityRepository">
<factory service="doctrine" method="getRepository"/>
<argument type="string">Foo\Bar\Entity\MyEntity</argument>
</service>
</services>

Ошибка: необработанное исключение «ReflectionException» с сообщением «Доступ к непубличному конструктору класса Doctrine \ ORM \ EntityManager».

Ошибка имеет смысл. Я думаю, что я был ближе с (сейчас прокомментировал) DefaultRepositoryFactory подход, но не мог заставить это работать.

Решить эту проблему не очень понятно, много исследовав. 99% ответов относятся к Symfony.

0

Решение

Я решил это, определив менеджер сущностей в контейнере следующим образом:

<service id="doctrine.xml_configuration">
<factory class="Doctrine\ORM\Tools\Setup" method="createXMLMetadataConfiguration" />
<argument id="doctrine.xml_config_path" type="collection">
<argument>path/to/mappings</argument>
</argument>
<argument id="is_dev_mode">dev_mode</argument>
</service>

<service id="doctrine.em">
<factory class="Doctrine\ORM\EntityManager" method="create"/>
<argument type="collection">
<argument key="driver">your_driver</argument>
<argument key="host">your_host</argument>
<argument key="dbname">your_db</argument>
<argument key="user">your_user</argument>
<argument key="password" type="string">your_password</argument>
</argument>
<argument type="service" id="doctrine.xml_configuration"/>
</service>

Теперь я могу использовать менеджер сущностей по мере необходимости.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector