Метод lt класса Expr
Метод lt класса Expr создаёт выражение сравнения
"меньше" (less than) для использования в конструкторе
запросов Doctrine. Он принимает два аргумента: левую и правую
часть сравнения. В качестве аргументов могут выступать имена
полей сущности, числа, строки или другие выражения Expr.
Метод возвращает объект Comparison, который затем
передаётся в методы where, andWhere или
orWhere построителя запросов.
Синтаксис
$expr->lt($left, $right)
Пример
Давайте выберем статьи, у которых поле views меньше
значения 100:
<?php
namespace App\Repository;
use App\Entity\Article;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Query\Expr;
class ArticleRepository extends EntityRepository
{
public function findLessViewed(): array
{
$expr = new Expr();
$qb = $this->createQueryBuilder('a');
$qb->where($expr->lt('a.views', 100));
return $qb->getQuery()->getResult();
}
}
?>
Результат выполнения кода:
["article 1", "article 2"]
Пример
Давайте сравним два поля одной сущности: выберем записи,
где createdAt меньше updatedAt:
<?php
namespace App\Repository;
use App\Entity\Article;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Query\Expr;
class ArticleRepository extends EntityRepository
{
public function findModified(): array
{
$expr = new Expr();
$qb = $this->createQueryBuilder('a');
$qb->where($expr->lt('a.createdAt', 'a.updatedAt'));
return $qb->getQuery()->getResult();
}
}
?>
Результат выполнения кода:
["article", "user"]
Пример
Давайте объединим условие lt с условием
gt через логическое "И":
<?php
namespace App\Repository;
use App\Entity\Article;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Query\Expr;
class ArticleRepository extends EntityRepository
{
public function findInRange(): array
{
$expr = new Expr();
$qb = $this->createQueryBuilder('a');
$qb->where($expr->andX(
$expr->lt('a.views', 100),
$expr->gt('a.views', 10)
));
return $qb->getQuery()->getResult();
}
}
?>
Результат выполнения кода:
["article 1", "article 2", "article 3"]