我的侦听器是行为的一部分,它应该删除任何调用的 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 框架,我坚持使用学说 1.0.x。