我有一个表单搜索,我想通过布尔字段选择数据。问题是,如果选择具有错误值(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)){,我选择了错误的选择,返回的数据是正确的,但我无法删除此测试。
答案 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'的方式,它们是字符串(不是整数)。