Php Symfony 3将服务注入实体存储库
我尝试将memcached服务注入实体存储库,但我的变体不起作用Php Symfony 3将服务注入实体存储库,php,symfony,Php,Symfony,我尝试将memcached服务注入实体存储库,但我的变体不起作用 services: work.repository.company: class: WorkBundle\Repository\CompanyRepository factory: ['@doctrine.orm.entity_manager', getRepository] arguments: - 'WorkBundle:Company' calls: - [
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';
}
}
为什么此代码不起作用?您是否已在您的工作包:公司
实体中注册了repositoryClass
?您的实体应该包含如下内容:@ORM\entity(repositoryClass=“Work\Company”)
或类似的yaml
您应该让Symfony通过将
work.repository.company
注入到您的小树枝扩展中来创建存储库。糟糕的做法!如图所示:或者使用从细枝扩展内部获取不会有好的结果。也许您的意思是建议注入存储库而不是注入实体管理器?