Symfony4 MongoDB注入存储库

Symfony4 MongoDB注入存储库,mongodb,dependency-injection,symfony4,Mongodb,Dependency Injection,Symfony4,我尝试将mongo存储库中的条令输入控制器。 在services.yaml文件中,我添加了以下条目: App\Account\Repository\MongoAccountRepository: factory: ["@doctrine_mongodb", getRepository] arguments: - App\Account\Domain\Entity\Account 在我的代码中,我想使用隐藏在接口AccountRepository后面的存储库

我尝试将mongo存储库中的条令输入控制器。 在services.yaml文件中,我添加了以下条目:

    App\Account\Repository\MongoAccountRepository:
    factory: ["@doctrine_mongodb", getRepository]
    arguments:
      - App\Account\Domain\Entity\Account
在我的代码中,我想使用隐藏在接口AccountRepository后面的存储库

class MongoAccountRepository extends DocumentRepository implements AccountRepository {}
当我尝试将存储库注入控制器构造函数时

class DefaultController extends Controller 
{
     private $accountRepository;

     public function __construct(AccountRepository $accountRepository) {
           $this->accountRepository = $accountRepository;
     }
我发现以下错误:

传递给App\Account\UserInterface\DefaultController::\uu construct()的参数1必须实现接口App\Account\Domain\Repository\AccountRepository,给定的条令\ODM\MongoDB\DocumentRepository实例


有人有类似的问题吗?

对于我的所有情况,以下解决方案都有效:

mongo_account_repository:
    class: Doctrine\ODM\MongoDB\Repository\DocumentRepository
    factory: ['@doctrine_mongodb.odm.default_document_manager', getRepository]
    arguments:
        - App\Infrastructure\Repository\MongoDB\Document\Keyword

从未出现过此问题,但您的控制器似乎收到了一个
DocumentRepository
,而不是
MongoAccountRepository
,并且您的
DocumentRepository
没有实现
AccountRepository
。您的工厂如何创建
MongoAccountRepository
?我的mongo存储库实现AccountRepository。(MongoAccountRepository类扩展DocumentRepository实现AccountRepository)。对于在控制器中将其更改为DocumentRepository时的测试,我得到:无法自动连线服务“App\Account\UserInterface\Api\DefaultController”:方法“\uu construct()”引用类“Doctrine\ODM\MongoDB\DocumentRepository”的参数“$accountRepository”,但不存在此类服务。您可能应该将此类别名为这些现有服务之一:“App\Account\Infrastructure\Persistence\doctor\MongoAccountRepository”,是否尝试为接口添加定义?将接口FQCN映射到实际类。似乎你可以这样做:
yourFQCN/AccountRepository:'@App\Account\Repository\MongoAccountRepository'
我可能是对的:)我今天早上想出来了:D我今天会检查一下,让你知道:)不幸的是,似乎没有什么变化
app.repository.mongo:class:doctor\ODM\MongoDB工厂:[“@doctor\u MongoDB”,getRepository]参数:-app\Account\Domain\Entity\Account-app\Account\Domain\repository\AccountRepository:”@app.repository.mongo