Symfony4 MongoDB注入存储库

时间:2019-02-10 10:13:13

标签: mongodb dependency-injection symfony4

我尝试将主义的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 :: __ construct()的参数1必须实现接口App \ Account \ Domain \ Repository \ AccountRepository,并提供Doctrine \ ODM \ MongoDB \ DocumentRepository的实例

有人遇到类似的问题吗?

1 个答案:

答案 0 :(得分:1)

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

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