/** * @param $config * @param ContainerBuilder $container * @param $class * @param $classContainerParameter */ protected function injectDoctrineRepositoryService($config, ContainerBuilder $container, $class, $classContainerParameter) { $id = $this->containerIdGenerator->getEntityRepositoryServiceId($class); if ($container->hasDefinition($id)) { return; } $repositoryClass = $this->containerIdGenerator->guessEntityRepositoryClass($class, $config['dir']); if (!class_exists($repositoryClass) && $config['auto']) { $def = $this->definitionFactory->createEntityRepositoryByFactoryDefinition($classContainerParameter); $container->setDefinition($id, $def); } elseif (class_exists($repositoryClass)) { $reflClass = $this->reflectionFactory->createReflectionClass($repositoryClass); if ($reflClass->isAbstract() || !$reflClass->isSubclassOf('Doctrine\\ORM\\EntityRepository')) { return; } $classContainerParameter = $this->containerIdGenerator->getContainerParameter($class); $repoClassContainerParameter = $this->injectClassContainerParameter($container, $repositoryClass); $def = $this->definitionFactory->createEntityRepositoryDefinition($classContainerParameter, $repoClassContainerParameter); $container->setDefinition($id, $def); } }
/** * @return EntityRepository */ public function getRepository() { return $this->get($this->containerIdGenerator->getEntityRepositoryServiceId($this->getClass())); }