symfony3:query_builder按布尔字段搜索

时间:2016-06-25 22:06:40

标签: doctrine symfony query-builder

我有一个表单搜索,我想通过布尔字段选择数据。问题是,如果选择具有错误值(0),则查询将返回所有数据,但如果选择具有真值(1),则查询是正确的。

在formTye中:

            ->add('publier', ChoiceType::class, array(
            'required' => false,
            'label' => 'Publier',
            'choices' => array('oui' => '1', 'non' => '0'),
            'multiple' => false,
            'expanded' => false,
            'attr' => array('class'=> 'form-control')
        ));

并在query_builder

        if (!empty($publier)) {
        $qb->andWhere('a.publier = :publier')
            ->setParameter('publier', $publier  );
    }

如果我删除此测试: if(!empty($ publier)){,我选择了错误的选择,返回的数据是正确的,但我无法删除此测试。

2 个答案:

答案 0 :(得分:1)

我已经改变了

 if (!empty($publier))

通过

if (null !== $publier )

现在工作正常

答案 1 :(得分:0)

我不确定我清楚地理解你的问题,但如果它是你想要的布尔值,你应该试试这个:

->add('publier', ChoiceType::class, array(
    'required' => false,
    'label' => 'Publier',
    'choices' => array(
        'oui' => true,
        'non' => false
    ),
    'multiple' => false,
    'expanded' => false,
    'attr' => array('class'=> 'form-control')
));

不确定它是否有效。使用'1'和'0'的方式,它们是字符串(不是整数)。