在Doctrine Repository中注入服务

时间:2018-04-11 13:19:19

标签: symfony dependency-injection

[Symfony 3.4]我有一个用户实体。我创建了一个扩展EntityRepository类的UserRepository。

我需要将一个服务注入到存储库中,但它似乎很难实现。我尝试了多种方法:构造函数注入,Setter注入,自定义工厂,但它们似乎都不起作用。

我想使用Setter Injection,因为我需要的服务只使用一次。这是我的实施:

UserRepository:

class UserRepository extends EntityRepository implements UserLoaderInterface {
    /**
     * @var Utils
     */
    protected $utils;

    /**
     * @param Utils                 $utils
     * @required
     */
    public function setUtils(Utils $utils) {
        $this->utils = $utils;
    }
    [...]
}

services.yml:

_defaults:
        autowire: true      
        autoconfigure: true 
        public: false

AppBundle\:
    resource: '../../src/AppBundle/*'
    exclude: '../../src/AppBundle/{Entity}'

AppBundle\Repository\UserRepository:
        calls:
           - [setUtils, ['@AppBundle\Common\Utils']]

似乎从未完成对setUtils的调用,实际上参数$ utils始终为null。

是的,我已经在services.yml中同时使用了@required注释和调用,但都没有。

你明白我的问题在哪里吗?或者更好的解决方案? 非常感谢你

0 个答案:

没有答案