Метод isNotNull класса Expr
Метод isNotNull класса Expr создаёт SQL-условие IS NOT NULL
для указанного поля. Он принимает одним параметром имя поля
или выражение и возвращает объект Comparison, который можно
передать в методы where или andWhere QueryBuilder.
Метод используется, когда нужно выбрать записи, у которых
значение поля не равно NULL.
Синтаксис
public function isNotNull(string $x): Comparison
Пример
Давайте выберем статьи, у которых поле text не равно NULL:
<?php
namespace App\Repository;
use App\Entity\Article;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\ORM\Query\Expr;
use Doctrine\Persistence\ManagerRegistry;
class ArticleRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Article::class);
}
public function findByTextNotNull(): array
{
$expr = new Expr();
$qb = $this->createQueryBuilder('a');
$qb->where($expr->isNotNull('a.text'));
return $qb->getQuery()->getResult();
}
}
?>
Результат выполнения кода:
["article 1", "article 2", "article 3"]
Пример
Давайте объединим условие isNotNull с другим условием
через метод andWhere:
<?php
namespace App\Repository;
use App\Entity\Article;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\ORM\Query\Expr;
use Doctrine\Persistence\ManagerRegistry;
class ArticleRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Article::class);
}
public function findActiveWithText(): array
{
$expr = new Expr();
$qb = $this->createQueryBuilder('a');
$qb->where($expr->isNotNull('a.text'))
->andWhere($expr->eq('a.boolean', true));
return $qb->getQuery()->getResult();
}
}
?>
Результат выполнения кода:
["article 2", "article 3"]