Propel ORM を使用して UNION クエリを作成しようとしています。
$criterion1 UNION $criterion2
誰もこれを行う方法を知っていますか?
Criteria を使用してユニオン クエリを作成することはできません。代わりに、SQL 文字列を自分で作成し、それを使用してオブジェクトをハイドレートすることができます。Criteria を使用してユニオン クエリの両方の部分を作成する場合は、 を呼び出すことができますBasePeer::createSelectSql(Criteria $criteria, array &$params)
。?
これにより、PDO レイヤーで設定する必要がある値の場所にある SQL 文字列が返されます。2 番目のパラメーターは、これらのパラメーターで埋められる配列です (これが、参照によって渡す理由です)。PDOStatement::execute(array $params)
これを関数に渡すことができます。
2つの解決策が思い浮かびます。まず、簡単なアプローチは、2つの別々の呼び出しを実行してarray_merge
から、それらを結合するために使用することです。ユースケースによっては、これは思ったほど時間のかかるものではない場合があります。
また、クエリの記述に行き詰まっている場合は、必要なクエリを使用してビューを記述し、それをPropelモデルに配置します。Propel / symfony 1.xには非常に複雑なマスター/ディテール画面がたくさんありましたが、このアプローチはうまくいきました。ORMを使用するという哲学に少し反しますが、たまにルールを破るのは楽しいです!:)