Метод length класса Expr
Метод length класса Expr возвращает количество символов в указанном строковом поле. Он принимает один параметр - имя поля или выражение, длину которого необходимо вычислить. Метод часто используется в конструкторе запросов Doctrine для фильтрации данных по длине текста.
Синтаксис
Expr::length(string $field)
Пример
Давайте создадим QueryBuilder и выберем статьи, длина заголовка которых больше 5 символов:
<?php
namespace App\Repository;
use App\Entity\Article;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Query\Expr;
class ArticleRepository extends EntityRepository
{
public function findByLength(): array
{
$expr = new Expr();
$qb = $this->createQueryBuilder('a');
$qb->where($expr->gt($expr->length('a.title'), 5));
return $qb->getQuery()->getResult();
}
}
?>
Результат выполнения кода вернёт массив объектов статей, удовлетворяющих условию.
Пример
Давайте сравним длину текстового поля content с числом 100:
<?php
namespace App\Repository;
use App\Entity\Article;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Query\Expr;
class ArticleRepository extends EntityRepository
{
public function findByContentLength(): array
{
$expr = new Expr();
$qb = $this->createQueryBuilder('a');
$qb->where($expr->eq($expr->length('a.content'), 100));
return $qb->getQuery()->getResult();
}
}
?>
Результат выполнения кода вернёт статьи, длина текста которых ровно 100 символов.