有没有办法在实体内部调用服务
我需要实体内的实体管理器,以便我能够使用存储库函数获得自定义结果。
我正在考虑像这样在我的实体中注入容器接口。
use SymfonyComponentDependencyInjectionContainerInterface;
class MyEntity
{
protected $container;
public function __construct(ContainerInterface $container)
{
$this->container = $container;
}
public function getEntityManager(){
return $this->container->get('doctrine')->getEntityManager();
}
}
但我认为这不是正确的方法,它需要更多的代码,我的意思是我必须对所有需要实体管理器的实体执行此操作
有什么好的解决方案吗?
你是否可以,但无论如何你都不应该这样做。这些实体本来就非常简单...
实体内部需要实体管理器,以便我能够使用存储库功能获得自定义结果
你到底想做什么,一定有不同的解决方案......
如前所述,依赖注入绝对是错误的方式。
将自定义实体存储库 (http://symfony.com/doc/2.0/book/doctrine.html#custom-repository-classes) 用于更复杂的查询,或使用特定服务,如果需要更复杂的查询,可以在其中实现自定义结果 (http://symfony.com/doc/2.0/book/service_container.html#referencing-injecting-services)