0

FakeRepository.phpのQueryBuilderを使用してこのタイプのクエリを実行したいと思います(ユーザーがいくつかのボックスをチェックできる検索フォーム用です)。

  if (sizeof($p['types']) > 0) {
         $qb->andWhere(  
               foreach ($p['types'] as $type_id) 
                    {'type.id=' .$type_id.' OR ' }
               '1=0');
         }

しかし、構文にエラーがありますが、修正方法がわかりません:

Parse error: syntax error, unexpected T_FOREACH, expecting ')' in /MyBundle/Entity/FakeRepository.php 

あなたの助けをどうもありがとう

4

3 に答える 3

1

最初に OR 条件を作成し、それをクエリ ビルダーに渡す必要があります。

   $first = true;
   $orQuery = '';
   foreach ($p['types'] as $type_id) 
       if ($first) {
           $first = false;
       } else {
           $orQuery .= ' OR ';
       }

       $orQuery .= 'type.id=' .$type_id;
   }
   $qb->andWhere($orQuery);
于 2012-09-14T21:00:01.263 に答える