Задать вопрос
@zzmaster

Почему Doctrine не выполняет запрос?

Ищу max(checking_index) по таблице. У текущего кастомного объекта в загашнике нашелся $em
use App\Entity\Result;

    private function getCurrentIndex() : int {
        $qb = $this->em->createQueryBuilder();        
        $ret = $qb->select('MAX(checking_index)')
            ->from('results', 'r')
            ->getQuery()
            ->getOneOrNullResult();
        return (int)$ret;        
    }


Класс Result
#[ORM\Entity(repositoryClass: ResultRepository::class)]
#[Table(name: "results")]
class Result
{
    #[ORM\Id]
    #[ORM\GeneratedValue]
    #[ORM\Column]
    private ?int $id = null;

    #[ORM\Column(length: 20)]
    private ?string $status = null;

    #[ORM\ManyToOne(inversedBy: 'results', targetEntity: Site::class)]
    #[ORM\JoinColumn(nullable: false, name: "site_id", referencedColumnName: "site_id")]
    private ?Site $site = null;

    #[ORM\ManyToOne(inversedBy: 'results')]
    #[ORM\JoinColumn(nullable: false, name: "checker_id", referencedColumnName: "checker_id")]
    private ?Checker $checker = null;

    #[ORM\Column]
    private ?int $checking_index = null;

    #[ORM\Column]
    private ?\DateTimeImmutable $createdAt = null;
    #[ORM\Id]
    #[ORM\GeneratedValue]
    #[ORM\Column]
    private ?int $id = null;

    #[ORM\Column(length: 20)]
    private ?string $status = null;

    #[ORM\ManyToOne(inversedBy: 'results', targetEntity: Site::class)]
    #[ORM\JoinColumn(nullable: false, name: "site_id", referencedColumnName: "site_id")]
    private ?Site $site = null;

    #[ORM\ManyToOne(inversedBy: 'results')]
    #[ORM\JoinColumn(nullable: false, name: "checker_id", referencedColumnName: "checker_id")]
    private ?Checker $checker = null;

    #[ORM\Column]
    private ?int $checking_index = null;

    #[ORM\Column]
    private ?\DateTimeImmutable $createdAt = null;
// getters.. setters..


Почему то выдает

In QueryException.php line 43:

  [Semantical Error] line 0, col 32 near 'results r': Error: Class 'results' is not defined.


In QueryException.php line 21:

  SELECT MAX(checking_index) FROM results r


Выдает на последнюю клаузу, если ее убрать - ошибка конвертации в следующей строке. Замена на getResult не помогает - та же ошибка. Надо заметить, что таблица пока пустая.

Добавлено
передача имени класса в form:
->from('Result', 'r')

приводит к такой ошибке. Что характерно - доктрина печатает sql запрос с переданным параметром, считая его именем таблицы.
63bfcd8d93c0e087758202.png
Пробовал переименовть таблицу в result и соответственно изменить аттрибут - ошибка та же.
  • Вопрос задан
  • 86 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 1
BoShurik
@BoShurik
Symfony developer
Метод from принимает на вход имя класса (e.g. 'App/Entity/Result' или Result::class), а не таблицы
+ вместо checking_index добжно быть r.checking_index
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы