Мне нужно реализовать статистику посещения на сайте, хотел в конструкторе всю логику прописать, но доктрину не получается вызвать из конструктора, пишет
Call to a member function has() on null
$visitRepo = $this->getDoctrine()->getRepository('App:VisitStatistics');
Можно ли вызвать констракт или как иначе? Ошибка
protected function getDoctrine(): ManagerRegistry
{
if (!$this->container->has('doctrine')) {
throw new \LogicException('The DoctrineBundle is not registered in your application. Try running "composer require symfony/orm-pack".');
}
return $this->container->get('doctrine');
}
Вызвать пытаюсь в конструкторе базового контроллера, который наследуется от Controller
Если вы используете четверку, то пора уже забыть про контейнер, а инжектить все что требуется. EntityManager насколько я помню имеет EntityManagerInterface, поэтому его надо заинжектить в конструктор:
public function __construct(EntityManagerInterface $em)
{
$this->repository = $em->getRepository('repoName');
}
Вызвать getDoctrine в конструкторе не выйдет, поскольку метод setContainer контроллера выполняется после конструктора и соответственно container равен null в момент создания объекта и вызов $this->container->has('doctrine') вызывает указанную вами ошибку
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости