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