Mi escucha forma parte de un comportamiento que debería eliminar todas las comprobaciones is_published en la cláusula where de cualquier consulta de selección llamada. Agregar una parte a una cláusula es realmente fácil, pero cómo eliminar una.Doctrine: ¿Cómo eliminar parte de una cláusula where de la consulta de selección dentro del oyente (preDqlSelect)?
Existen algunas funciones como Doctrine_Query->removeDqlQueryPart('where')
, pero eso elimina la cláusula where completa, mientras que solo necesito que se elimine la parte 'is_published = ?'
.
Sin embargo, podría manejar esto manualmente de alguna manera, con expresiones regulares o algo así. Pero la parte difícil es cómo eliminar el parámetro representado por el '?' de la matriz de parámetros correspondiente (recuperable por Doctrine_Query->getRawParams()
).
por lo que pido, es que hay una manera limpia para transformar este tipo de consulta:
...FROM Video v WHERE v.is_published = ? AND v.start_date < ? AND v.end_date > ?
a esta despojado uno y sin alterar los parametros representados por los signos de interrogación:
...FROM Video v WHERE v.start_date < ? AND v.end_date > ?
Esto es, por supuesto, solo un simple ejemplo, mis consultas son un poco más complejas. Lamentablemente, estoy atascado con la doctrina 1.0.x debido a la estructura de Symfony.
Gracias por eso. Los ejemplos van un largo camino :) – Aeolun
disfruta y disfruta :) –
Esta solución funciona para la cláusula "where" pero no por ejemplo la cláusula "groupBy": en este caso los getParts() deberían reemplazarse por: ... $ qb_group_by_part = $ qb-> getDqlPart ('groupBy'); $ qb_group_by_part = isset ($ qb_group_by_part ["parts"])? $ qb_group_by_part ["parts"]: array(); .. – Tsounabe