Aroused
@Aroused

Как получить доступ к репозиторию в сущности?

Пытался сделать по этому примеру:

use Doctrine\ORM\EntityManager;

class Someclass {

    private $entityManager;

    public function __construct(EntityManager $entityManager)
    {
        $this->entityManager = $entityManager;
    }

    public function someMethod()
    {
        $customer = $this->entityManager
            ->getRepository('Acme\CustomerBundle\Entity\Customer')
            ->findOneBy(...);
    }
 
 }


Но, получаю ошибку
Error: Call to a member function getRepository() on null
  • Вопрос задан
  • 859 просмотров
Решения вопроса 1
index0h
@index0h
PHP, Golang. https://github.com/index0h
Как получить доступ к репозиторию в сущности?

Вы не должны этого хотеть. Это противоречит самому понятию Repository-Entity.
Репозиторий - работает только с БД и только с этити.
Энтити - только хранит в себе данные и более ничего.

Не пытайтесь превратить Repository в ActiveRecord, добром это не закончится.

Если вам нужны зависимые энтити - тогда пропишите их в аннотациях.

Если нужно вызывать именно метод репозитория: это делается через DI в сервисах, либо через $this->getDoctrine()->getManager()->getRepository('AppBundle:MyEntityName') в контроллерах.

Конкретно в вашем примере: вы должны объявить сервис, в который будет насетапливаться EntityManager.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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