Репозиторий (Doctrine \ ORM \ EntityRepository) не принимает Doctrine \ Persistence \ ObjectRepository - PullRequest
0 голосов
/ 16 марта 2020

При обновлении доктрины / персистентности с 1.0 до 1.3 я столкнулся с проблемой при анализе кода stati c.

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 и возвращает EntityRepository, но тип возвращаемого значения getReposiry - ObjectRepository и не совместим. Работал с версией 1.0. Кто-нибудь понял, что это может быть?

Ответы [ 2 ]

0 голосов
/ 18 марта 2020

Хорошо, я обнаружил, что это связано с Doctrine изменением пространства имен. Это сообщенная ошибка.

https://github.com/doctrine/orm/pull/7997 https://github.com/doctrine/orm/pull/7953

0 голосов
/ 16 марта 2020

Эта ошибка верна. EntityManagerInterface наследует getRepository метод от ObjectManager интерфейса, где ObjectRepository напечатан .

Таким образом, вы не можете полагаться на EntityRepository, который будет возвращен из метода как реализация может выбрать возвращение только ObjectRepository.

Возможно, вы должны напечатать подсказку для чего-то другого, например EntityManager.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...