@Kerm

Symfony 3, один сервис, несколько репозиториев, как прописать в services.yml?

Прошу помочь, есть сервис, у этого сервиса несколько таблиц в дб, конкретнее 7.

К каждой из этих таблиц создан свой entity и свой репозиторий.

В сервисе в функциях есть простые запросы, которые я хотел бы организовать через репозиторий, типа findAll()

Но, если я в сервисе обращаюсь к репозиторию вот так (для примера):

$a = $this->em->getRepository('AppBundle:RepoOne')->findAll();
$b = $this->em->getRepository('AppBundle:RepoTwo')->findAll();
$c = $this->em->getRepository('AppBundle:RepoThree')->findAll();

То ругается на то что репозиторий не прописан для сервиса в services.yml

Там должно быть прописано примерно так:

myservice:
    class: AppBundle\Services\Myservice
    arguments: [ "@doctrine", "@configure", "@kernel"]
  myservice.repository:
    class: AppBundle\Repository\MyServiceRepository
    arguments: [ "@doctrine.dbal.default_connection"]


А как мне прописать не один, а несколько репозиториев для одного сервиса?

Вот так у меня в репозитории прописано после авто генерации:

namespace AppBundle\Repository;

use AppBundle\Entity\RepoOne;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
  • Вопрос задан
  • 160 просмотров
Пригласить эксперта
Ответы на вопрос 1
@dzhebrak
Проверьте, чтобы в методе getRepository() указывался Entity, а не название репозитория. Например,:
$a = $this->em->getRepository('AppBundle:Entity1')->findAll();
# или
$a = $this->em->getRepository(Entity1::class)->findAll();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы