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

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

Метод like класса Expr создаёт условие для сравнения поля с заданным шаблоном. Первым параметром передаётся имя поля или выражение, вторым - шаблон для сравнения. Метод возвращает объект Comparison, который можно использовать в методах where, andWhere и orWhere построителя запросов Doctrine.

Шаблон может содержать специальные символы подстановки: % соответствует любому количеству символов, а _ - ровно одному символу. Сравнение выполняется с учётом регистра в большинстве СУБД.

Синтаксис

$expr->like(field, pattern)

Пример

Давайте найдём статьи, название которых начинается с 'abcde':

<?php namespace App\Repository; use App\Entity\Article; use Doctrine\ORM\EntityRepository; use Doctrine\ORM\QueryBuilder; class ArticleRepository extends EntityRepository { public function findByTitlePrefix(string $prefix): array { $qb = $this->createQueryBuilder('a'); $expr = $qb->expr(); $qb->where($expr->like('a.title', ':prefix')) ->setParameter('prefix', $prefix . '%'); return $qb->getQuery()->getResult(); } } ?>

Результат выполнения кода для вызова findByTitlePrefix('abcde'):

["abcde article", "abcde news"]

Пример

Давайте найдём пользователей, email которых содержит 'user':

<?php namespace App\Repository; use App\Entity\User; use Doctrine\ORM\EntityRepository; use Doctrine\ORM\QueryBuilder; class UserRepository extends EntityRepository { public function findByEmailPart(string $part): array { $qb = $this->createQueryBuilder('u'); $expr = $qb->expr(); $qb->where($expr->like('u.email', ':part')) ->setParameter('part', '%' . $part . '%'); return $qb->getQuery()->getResult(); } } ?>

Результат выполнения кода для вызова findByEmailPart('user'):

["user@example.com", "myuser@mail.com"]

Пример

Давайте используем like вместе с orX для поиска по двум полям:

<?php namespace App\Repository; use App\Entity\Article; use Doctrine\ORM\EntityRepository; use Doctrine\ORM\QueryBuilder; class ArticleRepository extends EntityRepository { public function search(string $term): array { $qb = $this->createQueryBuilder('a'); $expr = $qb->expr(); $qb->where( $expr->orX( $expr->like('a.title', ':term'), $expr->like('a.text', ':term') ) )->setParameter('term', '%' . $term . '%'); return $qb->getQuery()->getResult(); } } ?>

Результат выполнения кода для вызова search('article'):

["article 1", "article 2", "new article"]

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

  • класс Expr,
    который создаёт выражения для запросов Doctrine
  • метод notLike,
    который создаёт условие NOT LIKE
  • метод eq,
    который создаёт условие равенства
  • метод in,
    который создаёт условие вхождения в список
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить