Как сделать запрос NOT NULL с Doctrine?
У меня есть таблица Test:
Test:
id | name
1 | aaa
2 |
3 | ccc
4 | aaa
5 |
6 | ddd
Я хочу результат, где имя НЕ NULL:
aaa
ccc
aaa
ddd
Как я могу получить с:
Doctrine_Core::getTable('Test')->findBy('name', NOTNULL??) <-doesnt working
и в модели с:
$this->createQuery('u')
->where('name = ?', NOTNULL ???) <- doesnt working
->execute();
3 ответа
Решение
Попробуй это:
$this->createQuery('u')
->where('name IS NOT NULL')
->execute();
который является стандартным синтаксисом SQL. Doctrine не конвертирует значения Null в правильные sql.
Сделайте это в Doctrine, из построителя запросов и класса Expr.
$qb = $entityManager->createQueryBuilder();
$result = $qb->select('t')
->from('Test','t')
->where($qb->expr()->isNotNull('t.name'))
->groupBy('t.name')
->getQuery()
->getResult();
Существуют также различные функции ().
Или просто используйте фильтр Doctrine:
$filters[] = new Filter('name', null, 'notEqual');
затем
$list = $this->get(yourDBinstance)
->setDocIdentifier('TestBundle:Test')
->setFilters($filters)
->list();