6

Propel ORM を使用して UNION クエリを作成しようとしています。

$criterion1 UNION $criterion2

誰もこれを行う方法を知っていますか?

4

2 に答える 2

4

Criteria を使用してユニオン クエリを作成することはできません。代わりに、SQL 文字列を自分で作成し、それを使用してオブジェクトをハイドレートすることができます。Criteria を使用してユニオン クエリの両方の部分を作成する場合は、 を呼び出すことができますBasePeer::createSelectSql(Criteria $criteria, array &$params)?これにより、PDO レイヤーで設定する必要がある値の場所にある SQL 文字列が返されます。2 番目のパラメーターは、これらのパラメーターで埋められる配列です (これが、参照によって渡す理由です)。PDOStatement::execute(array $params)これを関数に渡すことができます。

于 2010-01-02T12:13:15.630 に答える
2

2つの解決策が思い浮かびます。まず、簡単なアプローチは、2つの別々の呼び出しを実行してarray_mergeから、それらを結合するために使用することです。ユースケースによっては、これは思ったほど時間のかかるものではない場合があります。

また、クエリの記述に行き詰まっている場合は、必要なクエリを使用してビューを記述し、それをPropelモデルに配置します。Propel / symfony 1.xには非常に複雑なマスター/ディテール画面がたくさんありましたが、このアプローチはうまくいきました。ORMを使用するという哲学に少し反しますが、たまにルールを破るのは楽しいです!:)

于 2011-09-29T18:21:31.343 に答える