41

QueryBuilderこのようなDQLを構築する必要があります

[QUERY]... AND WHERE e.type = x OR e.type = Y OR e.type = N [...]

配列に型があります。この配列をクエリ ビルダーに渡すにはどうすればよいですか?

$qb->andWhere($qb->expr()->orx(CONDITIONS));

型のリストは動的になり、$qb->andWhere各 foreach 型ループを呼び出すと、AND WHERE の OR はなくなります。
乗算orx式を保存してから に追加できandWhereますか? この、おそらく一般的な問題を解決する方法はありますか?

4

5 に答える 5

12

私は明日がより良い日になることを知っていました。解決策は簡単です。あなたはそのようにOR式の配列を作ることができます

$ors[] = $qb->expr()->orx('e.type = '.$qb->expr()->literal($value));

次に、次のように join メソッドを介してクエリ ビルダーの andWhere()/Where() メソッドに追加します。

$qb->andWhere(join(' OR ', $ors));
于 2012-07-29T11:36:18.063 に答える
2

このようにcall_user_func_array関数を使用することもできます。

配列の項目をパラメーターとして渡すメソッドを呼び出すことができます。

例えば:

$conditions = array('e.type = x', 'e.type = Y', 'e.type = N');
$expr = $qb->expr();
call_user_func_array(array($expr, 'orX'), $conditions);
于 2012-09-05T18:34:11.017 に答える