2016-06-25 7 views
0

フォーム検索があり、ブール値フィールドでデータを選択したいと思います。問題は、選択選択が偽の値(0)を持つ場合、クエリはすべてのデータを返しますが、選択した場合はの値がtrue(1)になります。 formTyeでsymfony3:ブール値フィールドによるquery_builder検索

  ->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 ); 
    } 

私は、このテスト削除する場合:(!空($のpublier))場合を{と私は誤った選択肢を選択返されたデータは正しいですが、このテストを削除することはできません。

答えて

1

私は

if (null !== $publier) 

によって

if (!empty($publier)) 

を変更していると(!空($のpublier))場合、それは**私が変更されている

+1

これは予想される動作です。 [マニュアル](https://secure.php.net/empty)には、空であるとみなされる値のリストが表示されます。 'false'はその一つです – kero

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'で持っている方法は、それらは文字列(整数ではありません)です。

+0

今正常に動作します**場合**により、 (null!== $ publier)**と今すぐ正常に動作します – hous

関連する問題