Метод upper класса Expr
Метод upper класса Expr приводит строковое значение к верхнему регистру. Он используется в DQL-запросах Doctrine для преобразования регистра символов прямо на уровне базы данных. Первым параметром передаётся выражение или имя поля, которое нужно преобразовать.
Синтаксис
Expr::upper(string $expr)
Пример
Давайте создадим QueryBuilder и приведём значение поля title к верхнему регистру:
<?php
namespace App\Repository;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\Query\Expr;
class ArticleRepository
{
private EntityManagerInterface $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
public function findUpperTitles(): array
{
$qb = $this->em->createQueryBuilder();
$qb->select(new Expr()->upper('a.title') . ' AS upperTitle')
->from('App\Entity\Article', 'a');
return $qb->getQuery()->getResult();
}
}
?>
Результат выполнения кода:
[["upperTitle" => "HELLO"], ["upperTitle" => "ARTICLE"]]
Пример
Давайте используем метод upper в условии where для поиска без учёта регистра:
<?php
namespace App\Repository;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\Query\Expr;
class ArticleRepository
{
private EntityManagerInterface $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
public function findByTitle(string $title): array
{
$expr = new Expr();
$qb = $this->em->createQueryBuilder();
$qb->select('a')
->from('App\Entity\Article', 'a')
->where($expr->eq($expr->upper('a.title'), $expr->upper(':title')))
->setParameter('title', $title);
return $qb->getQuery()->getResult();
}
}
?>
Результат выполнения кода для 'hello':
[["id" => 1, "title" => "hello"]]