symfony3 : query_builder 按布尔字段搜索

symfony3 : query_builder search by boolean field

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

形式为:

            ->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)) { 并且我 select 一个错误的选择返回的数据是正确的但我不能'不要删除此测试。

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

->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'的方式,它们是字符串(不是整数)。

我变了

 if (!empty($publier))

来自

if (null !== $publier )

现在工作正常