Symfony4 MongoDB注入存储库
我尝试将mongo存储库中的条令输入控制器。 在services.yaml文件中,我添加了以下条目: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后面的存储库
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