Dependency injection 无法将实体存储库注入服务

Dependency injection 无法将实体存储库注入服务,dependency-injection,doctrine-orm,symfony,Dependency Injection,Doctrine Orm,Symfony,我目前正在使用Symfony 3和Doctrine 2.5设置一个应用程序,并且我正在尝试将实体存储库注入到服务中,我不断遇到以下错误: 类型错误:传递给UserService::setUserRepository()的参数1必须 是UserRepository的实例,是 条令\ORM\EntityRepository已给出,已调用 第373行的appDevDebugProjectContainer.php 这就是我的服务中的连接方式。yml: service_user: class: Us

我目前正在使用Symfony 3和Doctrine 2.5设置一个应用程序,并且我正在尝试将实体存储库注入到服务中,我不断遇到以下错误:

类型错误:传递给UserService::setUserRepository()的参数1必须 是UserRepository的实例,是 条令\ORM\EntityRepository已给出,已调用 第373行的appDevDebugProjectContainer.php

这就是我的
服务中的连接方式。yml

service_user:
  class: UserService
  calls:
    - [setUserRepository, ["@service_user_repository"]]

service_user_repository:
  class: UserRepository
  factory: ["@doctrine.orm.entity_manager", getRepository]
  arguments: [Entity\User]
这是我的
用户服务

<?php

class UserService {

    protected $userRepository;

    public function setUserRepository( UserRepository $userRepository )
    {
        $this->userRepository = $userRepository;
    }

}
我已经检查并再次检查了我的名称空间和类名,所有这些看起来都很好


如何使用Symfony 3服务连接将实体存储库注入服务?

如评论中所述,您所展示的一切看起来都很好

但由于您从entity manager获得的是一个
EntityRepository
实例,而不是
UserRepository
,这意味着您没有将
User
实体配置为具有自定义(
UserRepository
)存储库类

如果使用YAML映射,它应该类似于:

实体\用户:
repositoryClass:UserRepository
#其余的映射

您是否在映射中将
UserRepository
设置为
Entity\User
Entity的存储库?@dragoste谢谢!那一行在我的yml定义中被注释掉了。。。我想我最好删除这个问题?除非你把你的评论作为一个答案,这样我就可以接受。我发布了一个答案,因为我认为这是一个常见的问题。
<?php

use Doctrine\ORM\EntityRepository;

class UserRepository extends EntityRepository {

}