Метод lower класса Expr
Метод lower класса Expr создаёт выражение DQL,
которое приводит строковое значение к нижнему регистру.
Метод принимает один параметр - строку или выражение,
которое нужно преобразовать. Возвращается объект выражения,
пригодный для использования в запросах Doctrine ORM.
Синтаксис
Expr::lower(string $expr)
Пример
Давайте создадим выражение, приводящее поле title к нижнему регистру:
<?php
namespace App\Repository;
use App\Entity\Article;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Query\Expr;
class ArticleRepository extends EntityRepository
{
public function findByLowerTitle(string $title): array
{
$expr = new Expr();
$lowerExpr = $expr->lower('a.title');
return $this->createQueryBuilder('a')
->where($lowerExpr . ' = :title')
->setParameter('title', strtolower($title))
->getQuery()
->getResult();
}
}
?>
Пример
Давайте используем метод lower вместе с методом like для поиска без учёта регистра:
<?php
namespace App\Repository;
use App\Entity\Article;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Query\Expr;
class ArticleRepository extends EntityRepository
{
public function searchByTitle(string $term): array
{
$expr = new Expr();
$lowerExpr = $expr->lower('a.title');
return $this->createQueryBuilder('a')
->where($expr->like($lowerExpr, $expr->lower(':term')))
->setParameter('term', '%' . $term . '%')
->getQuery()
->getResult();
}
}
?>
Пример
Давайте выведем результат работы метода lower в виде строки DQL:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Doctrine\ORM\Query\Expr;
class ArticleController extends AbstractController
{
public function index(): Response
{
$expr = new Expr();
$res = $expr->lower('a.title');
return new Response($res);
}
}
?>
Результат выполнения кода:
"LOWER(a.title)"