/**
  * @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);
     }
 }
Пример #2
0
 /**
  * @return EntityRepository
  */
 public function getRepository()
 {
     return $this->get($this->containerIdGenerator->getEntityRepositoryServiceId($this->getClass()));
 }