Symfony3 - 在EntityRepository中获取容器

时间:2016-03-21 10:36:44

标签: php containers symfony

在访问容器时我遇到了一些EntityRepository

我的services.yml

services:
    app.event_repository:
        class: Test\MyTestBundle\Repository\EventRepository
        factory: ["@doctrine", "getRepository"]
        arguments: ["MyTestBundle:Event"]
        calls:
            - ["setContainer", ["@service_container"]]

和我的存储库

class EventRepository extends EntityRepository
{
    protected $container;

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

    public function getSomething($id)
    {
        var_dump($this->container);die(); // returns null
    }

...

当我尝试访问容器时,它始终为“null”。我知道有一些相同的问题,但我仍然无法找到解决问题的方法。

似乎永远不会调用方法“setContainer()”。

PS:我使用Symfony3

1 个答案:

答案 0 :(得分:0)

也许使用这个:

use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;

class EventRepository extends EntityRepository implements ContainerAwareInterface
{
    protected $container;

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

    public function getSomething($id)
    {
        var_dump($this->container);die(); // returns null
    }

...