子句where条件为null在formtype构建器中不起作用

时间:2012-12-05 16:31:34

标签: php symfony-2.1

namespace Quindimotos\ProyectoBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Doctrine\ORM\EntityRepository;

class asignarEmpleadoAServicioType extends AbstractType {

    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder->add('ciudad', 'entity', array(
            'empty_value' => 'Seleccione Empleado',
            'class' => 'QuindimotosProyectoBundle:empleado',
            'property_path' => false,
            'query_builder' => function (EntityRepository $er) {
                return $er->createQueryBuilder('e')
                                ->join('e.cargo', 'c')
                                ->from('QuindimotosProyectoBundle:Revision', 'r')
                                ->join('r.empleado', 'e1')
                                ->where('c.nombre =:cargo and r.empleado is not null')
                                ->setParameter('cargo', 'tecnico');
            }
        ))
        ->add('Revision', 'entity', array(
            'empty_value' => 'Seleccione Revision Disponible',
            'class' => 'QuindimotosProyectoBundle:revision',
            'property_path' => false,
            'query_builder' => function (EntityRepository $er) {
                return $er->createQueryBuilder('r')

                                ->where('r.recividopor is  null');

            }));

    }
    public function getName() {
        return 'contact';
    }
}

在下一行我不知道为什么它不起作用

->where('c.nombre =:cargo and r.empleado is null')

条款哪里好,但条件“为空”并没有显示任何内容,但我知道有一些东西要显示。

在这一行中,这个条款没有问题,“is null”运作良好

->where('r.recividopor is  null');

有人可以告诉我这里有什么问题。

1 个答案:

答案 0 :(得分:0)

使用常规运算符将值与“null”值进行比较时,将导致结果集为空,因为比较不会产生布尔值(而是返回NULL)

你必须避免比较,一种方法是:SELECT IFNULL(e.cargo,0) AS e.cargo然后你可以在where c.nomber = e.cargo中使用它。