14

Doctrineでかなり単純なクエリを作成するのに問題があります...

2つの配列($ countrys、$ citys)があり、データベースレコード値がいずれかの内部と一致するかどうかを確認する必要があります。私は次のようなものを探しています:

->whereIn('country', 'city', $countries, $cities)

...「country」は$countriesのWHEREINであり、「city」は$cityのWHEREINです。

2つを分離することはできますが、必要なクエリには他にも多くの条件があるため、それは不可能です。結果として得られるSQLは次のようになります。

SELECT ... 
WHERE ... 
AND ...
AND ... 
AND ('country' IN (1,2,3) OR 'city' IN (7,8,9))
AND ... 
AND ...;

したがって、それはブラケットの問題としてのみ考えることができます。Doctrine DQLでこれが可能かどうか誰か知っていますか?ドキュメントを調べましたが、方向性が見つかりません。

ありがとう

4

2 に答える 2

40

このナンセンスについて 1 時間実験した後、これを機能させるための構文を次に示します。

$q->andWhere('country IN ? OR city IN ?', array(array(1, 2, 3), array(7, 8, 9)));
于 2010-02-26T19:09:08.160 に答える
4

次のようなものを使用しないのはなぜですか?

$countryIds=[1,2,3];
$cityIds=[7,8,9];

$q->whereIn('country',$countryIds)->andWhereIn('city',$cityIds);

また、コンテキストのためにそれらを連鎖させます (ほとんどの Doctrine メソッドは $this を返します)。

http://www.symfony-project.org/doctrine/1_2/en/06-Working-With-Dataを参照してください

于 2012-04-02T15:08:09.770 に答える