Я пытаюсь использовать естественную сортировку в MySQL через построитель запросов доктрины.Но у функции orderBy () нет нужных мне параметров.
Это запрос, который мне нужно передать доктрине:
SELECT * FROM `ouvidoria`
ORDER BY CAST(RIGHT(`id`, LENGTH(`id`)-3) AS UNSIGNED) DESC;
Я пробовал следующее:
public function getLastKeyOfOrigin($origin) {
$data = $this->getRepository()->findOneBy(['origin'=>$origin->getId()]);
$select = $this->em->createQueryBuilder();
$select->select('o')
->from($this->entityPath, 'o')
->where("o.origin = :origin")
->setParameter('origin', $origin)
->orderBy('CAST(RIGHT(o.id, LENGTH(o.id)-3) AS UNSIGNED)', 'DESC')
->setMaxResults('1');
return $select->getQuery()->getOneOrNullResult();
}
, которая выдает следующую ошибку:
Тип: Doctrine \ ORM \ Query \ QueryException Сообщение: [Синтаксическая ошибка] строка 0, столбец 79: Ошибка: ожидаемая известная функция, получена 'CAST '