存储库 (Doctrine\ORM\EntityRepository) 不接受 Doctrine\Persistence\ObjectRepository
Repository (Doctrine\ORM\EntityRepository) does not accept Doctrine\Persistence\ObjectRepository
将 doctrine/persistence 从 1.0 升级到 1.3 时,我遇到了静态代码分析问题。
Repository (Doctrine\ORM\EntityRepository) does not accept
Doctrine\Persistence\ObjectRepository.
问题出在这个
<?php
declare(strict_types=1);
namespace Appbundle\Repository\Company;
class CompanyRepository
{
/**
* @var EntityManagerInterface
*/
private $entityManager;
/**
* @var EntityRepository
*/
private $entityRepository;
/**
* @var ProfileRepository
*/
private $profileRepository;
public function __construct(
EntityManagerInterface $entityManager,
) {
$this->entityManager = $entityManager;
$this->entityRepository = $entityManager->getRepository(Company::class);
}
代码作为 getRepository reuturns EntityRepository 但 return 类型的 getReposiry 是 ObjectRepository 并且不兼容。
使用 1.0 版。有人知道它可能是什么吗?
这个错误是正确的。 EntityManagerInterface
从 ObjectManager
接口继承 getRepository
方法,其中 ObjectRepository
is typehinted.
所以你不能依赖 EntityRepository
从方法中 returned 因为实现可以选择 return 只是 ObjectRepository
.
您可能应该为其他内容输入提示,例如 EntityManager
。
好的,所以我发现这是由于 Doctrine 更改了命名空间。这是一个报告的错误。
https://github.com/doctrine/orm/pull/7997
https://github.com/doctrine/orm/pull/7953
将 doctrine/persistence 从 1.0 升级到 1.3 时,我遇到了静态代码分析问题。
Repository (Doctrine\ORM\EntityRepository) does not accept
Doctrine\Persistence\ObjectRepository.
问题出在这个
<?php
declare(strict_types=1);
namespace Appbundle\Repository\Company;
class CompanyRepository
{
/**
* @var EntityManagerInterface
*/
private $entityManager;
/**
* @var EntityRepository
*/
private $entityRepository;
/**
* @var ProfileRepository
*/
private $profileRepository;
public function __construct(
EntityManagerInterface $entityManager,
) {
$this->entityManager = $entityManager;
$this->entityRepository = $entityManager->getRepository(Company::class);
}
代码作为 getRepository reuturns EntityRepository 但 return 类型的 getReposiry 是 ObjectRepository 并且不兼容。 使用 1.0 版。有人知道它可能是什么吗?
这个错误是正确的。 EntityManagerInterface
从 ObjectManager
接口继承 getRepository
方法,其中 ObjectRepository
is typehinted.
所以你不能依赖 EntityRepository
从方法中 returned 因为实现可以选择 return 只是 ObjectRepository
.
您可能应该为其他内容输入提示,例如 EntityManager
。
好的,所以我发现这是由于 Doctrine 更改了命名空间。这是一个报告的错误。
https://github.com/doctrine/orm/pull/7997 https://github.com/doctrine/orm/pull/7953