0

有没有办法在实体内部调用服务

我需要实体内部的实体管理器,以便能够使用存储库功能获得自定义结果。

我正在考虑像这样在我的实体中注入 ContainerInterface。

use Symfony\Component\DependencyInjection\ContainerInterface;

class MyEntity
{
    protected $container;

    public function __construct(ContainerInterface $container)
    {
        $this->container = $container;
    }

    public function getEntityManager(){
        return $this->container->get('doctrine')->getEntityManager();
    }
} 

但我认为这不是正确的方法,它需要更多代码我的意思是我必须为我需要实体管理器的所有实体执行此操作

有什么好的解决办法吗?

4

2 回答 2

3

我不知道你是否可以,但无论如何你都不应该这样做。这些实体应该非常简单......

需要实体内部的实体管理器,这样我就可以使用存储库功能获得自定义结果

你到底想做什么,肯定有不同的解决方案……

于 2012-12-10T08:16:45.210 回答
1

如前所述,依赖注入绝对是错误的方法。

使用自定义实体存储库 (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)

于 2012-12-10T09:37:09.640 回答