私のリスナーは動作の一部であり、呼び出されたselectクエリのwhere句のis_publishedチェックをすべて削除する必要があります。句にパーツを追加するのは本当に簡単ですが、それを削除する方法。
のようないくつかの関数がありますがDoctrine_Query->removeDqlQueryPart('where')
、それは完全なwhere句を削除しますが、削除する必要があるのは'is_published = ?'
一部だけです。
ただし、正規表現などを使用して、これを手動で処理することはできます。ただし、注意が必要なのは、「?」で表されるパラメーターを削除する方法です。対応するパラメータ配列から(によって取得可能Doctrine_Query->getRawParams()
)。
だから私は尋ねます、この種のクエリを変換するためのクリーンな方法はありますか?
...FROM Video v WHERE v.is_published = ? AND v.start_date < ? AND v.end_date > ?
この削除されたものに、疑問符で表されるパラメータを台無しにすることなく:
...FROM Video v WHERE v.start_date < ? AND v.end_date > ?
これはもちろん単純な例です。私のクエリはもう少し複雑です。残念ながら、symfonyフレームワークのために私はdoctrine1.0.xで立ち往生しています。