2013-11-23 2 views
3

Я работаю над проектом Symfony 2/Doctrine, который должен использовать устаревшую базу данных. Я создал объект Doctrine 2 из существующей базы данных, которая, как правило, отлично работает. Но я не могу заставить работать один случай: есть некоторые записи в базе данных, у которых есть пустое поле (а не NULL, просто пустое), которое я хочу выбрать через запрос Doctrine.Doctrine 2 select empty field

$em = $this->getDoctrine()->getManager(); 
$query = $em->createQuery(
    'SELECT p FROM dtrcmsBundle:Page p WHERE p.articleName = :pageName' 
)->setParameter('pageName', ''); 

Доза не работает. Любые идеи о том, как выбрать пустые поля?

ответ

2

Поскольку пустая строка меньше любого символа (может быть, я ошибаюсь), мы можем сравнить с младшим символом в схеме кодирования символов «0». Следующий пример показывает, что я имею в виду.

$em = $this->getDoctrine()->getManager(); 
    $query = $em->createQuery(
    'SELECT p FROM dtrcmsBundle:Page p WHERE p.articleName < :pageName' 
)->setParameter('pageName', '0'); 
+0

Работает отлично! Спасибо за помощь! – wowpatrick

+0

Сделано еще несколько тестов. К сожалению, доза не работает во всех случаях. Проделает еще несколько тестов. – wowpatrick

+1

Просто небольшое изменение, необходимое для его работы: вместо использования 'a' вы должны использовать' 0'. При использовании 'a' вы также получаете записи, которые не пусты, но поле начинается с числа. – wowpatrick