Symfony 3将服务注入实体存储库

时间:2016-08-01 14:09:27

标签: php symfony

我尝试将memcached服务注入实体存储库,但我的变体不起作用。

services:
  work.repository.company:
    class: WorkBundle\Repository\CompanyRepository
    factory: ['@doctrine.orm.entity_manager', getRepository]
    arguments:
        - 'WorkBundle:Company'
    calls:
        - [setCacheService, ['@memcache.default']]

CompanyRepository有setter setCacheService,但它没有被调用。

class CompanyExtension extends \Twig_Extension
{
    /**
     * @var EntityManager
     */
    private $em;

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

    public function getFunctions()
    {
        return array(
            new \Twig_SimpleFunction('getCompaniesCount', array($this, 'getCompaniesCount'))
        );
    }

    /**
     * @return integer
     */
    public function getCompaniesCount()
    {
        return $this->em->getRepository('WorkBundle:Company')->getActiveCompaniesCount();
    }

    public function getName()
    {
        return 'work_company_extension';
    }
}

为什么这段代码不起作用?

1 个答案:

答案 0 :(得分:0)

您是否在repositoryClass实体中注册了WorkBundle:Company?您的实体应包含以下内容:@ORM\Entity(repositoryClass="Work\Company")或yaml equivalent。

你应该让Symfony通过将work.repository.company注入你的Twig扩展来创建存储库。