РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
101 of 258 menu

Метод substring класса Expr

Метод substring класса Expr создаёт SQL-выражение для извлечения подстроки из строкового поля. Первым параметром передаётся выражение или имя поля, вторым - начальная позиция (нумерация с единицы), третьим - длина извлекаемой части. Метод возвращает объект Expr, который можно использовать в методах where, andWhere и других.

Синтаксис

$expr->substring(string $field, int $start, int $length)

Пример

Давайте выберем первые три символа из поля name:

<?php namespace App\Repository; use App\Entity\Article; use Doctrine\ORM\EntityRepository; use Doctrine\ORM\Query\Expr; class ArticleRepository extends EntityRepository { public function findShortNames(): array { $expr = new Expr(); $res = $this->createQueryBuilder('a') ->select($expr->substring('a.name', 1, 3) . ' AS shortName') ->getQuery() ->getResult(); return $res; } } ?>

Результат выполнения кода:

[["shortName" => "abc"], ["shortName" => "def"]]

Пример

Давайте извлечём подстроку начиная с четвёртого символа без указания длины:

<?php namespace App\Repository; use App\Entity\Article; use Doctrine\ORM\EntityRepository; use Doctrine\ORM\Query\Expr; class ArticleRepository extends EntityRepository { public function findSuffixes(): array { $expr = new Expr(); $res = $this->createQueryBuilder('a') ->select($expr->substring('a.text', 4) . ' AS suffix') ->getQuery() ->getResult(); return $res; } } ?>

Результат выполнения кода:

[["suffix" => "de"], ["suffix" => "article"]]

Пример

Давайте используем метод substring в условии where для фильтрации записей:

<?php namespace App\Repository; use App\Entity\Article; use Doctrine\ORM\EntityRepository; use Doctrine\ORM\Query\Expr; class ArticleRepository extends EntityRepository { public function findByPrefix(string $prefix): array { $expr = new Expr(); $res = $this->createQueryBuilder('a') ->where($expr->eq( $expr->substring('a.name', 1, 2), $expr->literal($prefix) )) ->getQuery() ->getResult(); return $res; } } ?>

Результат выполнения кода для $prefix = 'ab':

[Article { id: 1, name: "abcde" }]

Смотрите также

  • класс Expr,
    который создаёт выражения для QueryBuilder
  • метод length,
    который возвращает длину строки
  • метод concat,
    который объединяет строки
  • метод trim,
    который удаляет пробелы по краям строки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить