В чем проблема с функцией моего репозитория?
Я получаю следующую ошибку, когда пытаюсь использовать это в своем контроллере
Возвращаемое значение App\Repository\AccountRepository::findOneByAccountCode() должно быть экземпляром App\Repository\Bank или null, возвращенным экземпляром App\Entity\Account
/**
* @param Request $request
* @param string $accountCode
* @return Response
* @throws EntityNotFoundException
*/
public function somefunction(Request $request, string $accountCode)
{
/** @var BankRepository $acRepository */
$acRepository = $this->getDoctrine()->getRepository(Account::class);
$bank = $acRepository->findOneByAccountCode($accountCode);
}
Код репозитория
public function findOneByAccountCode(string $accountCode): ?Bank
{
try {
return $this->createQueryBuilder('a')
->innerJoin('a.bank', 'b')
->where('a.code = :code')
->setParameter('code', $accountCode)
->getQuery()
->getOneOrNullResult();
}catch (NonUniqueResultException $e) {
return null;
}
}
2 ответа
Решение
Просто изменил код на мой AccountRepository и добавил массив в качестве возвращаемого типа
function findOneByAccountCode(string $accountCode): ?array{
return $this->createQueryBuilder('a')
->innerJoin('a.bank', 'b')
->where('a.code = :code')
->setParameter('code', $accountCode)
->getQuery()
->getResults();
}
Я думаю, вам нужно просто изменить тип возврата
public function findOneByAccountCode(string $accountCode): ?Bank
{
try {
return $this->createQueryBuilder('a')
->innerJoin('a.bank', 'b')
->where('a.code = :code')
->setParameter('code', $accountCode)
->getQuery()
->getOneOrNullResult();
} catch (NonUniqueResultException $e) {
return null;
}
}
из
: ?Bank
к
: ?Account
public function findOneByAccountCode(string $accountCode): ?Account
{
try {
return $this->createQueryBuilder('a')
->innerJoin('a.bank', 'b')
->where('a.code = :code')
->setParameter('code', $accountCode)
->getQuery()
->getOneOrNullResult();
} catch (NonUniqueResultException $e) {
return null;
}
}