Метод eq класса Expr
Метод eq класса Expr создаёт выражение для сравнения поля на равенство заданному значению. Первым параметром передаётся имя поля или SQL-выражение, вторым - значение для сравнения. Результат работы метода можно передавать в методы where, andWhere и orWhere конструктора запросов QueryBuilder.
Синтаксис
$expr->eq(field, value)
Пример
Давайте выберем статьи, у которых поле status равно строке 'active':
<?php
namespace App\Repository;
use App\Entity\Article;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\QueryBuilder;
class ArticleRepository extends EntityRepository
{
public function findActive(): array
{
$qb = $this->createQueryBuilder('a');
$qb->where(
$qb->expr()->eq('a.status', ':status')
);
$qb->setParameter('status', 'active');
return $qb->getQuery()->getResult();
}
}
?>
Пример
Давайте выберем статьи, у которых поле views равно числу 100:
<?php
namespace App\Repository;
use App\Entity\Article;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\QueryBuilder;
class ArticleRepository extends EntityRepository
{
public function findByViews(): array
{
$qb = $this->createQueryBuilder('a');
$qb->where(
$qb->expr()->eq('a.views', ':views')
);
$qb->setParameter('views', 100);
return $qb->getQuery()->getResult();
}
}
?>
Пример
Давайте объединим два условия равенства через логическое И:
<?php
namespace App\Repository;
use App\Entity\Article;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\QueryBuilder;
class ArticleRepository extends EntityRepository
{
public function findPublished(): array
{
$qb = $this->createQueryBuilder('a');
$qb->where(
$qb->expr()->andX(
$qb->expr()->eq('a.status', ':status'),
$qb->expr()->eq('a.published', ':published')
)
);
$qb->setParameter('status', 'active');
$qb->setParameter('published', true);
return $qb->getQuery()->getResult();
}
}
?>