No sé sobre Symfony, pero puedes sustituirlo
a ILIKE b
con
lower(a) LIKE lower(b)
También puedes probar el operador ~~*
, que es un sinónimo de ILIKE
Tiene una precedencia de operadores ligeramente más baja, por lo que es posible que necesite paréntesis para cadenas concatenadas donde no lo haría con ILIKE
a ILIKE b || c
se convierte
a ~~* (b || c)
El manual sobre coincidencia de patrones, comenzando con LIKE
/ ILIKE
.
Creo que este tipo tenía el mismo problema y obtuvo una respuesta:
http://forum.symfony-project.org/viewtopic.php?f=23&t=40424
Obviamente, puedes ampliar Symfony2 con funciones específicas del proveedor de SQL:
http://docs.doctrine-project.org/projects/doctrine-orm/en/2.1/cookbook/dql-user-defined-functions.html
No soy un fanático de los ORM y los marcos que destrozan la rica funcionalidad de Postgres solo para seguir siendo "portátil" (lo que casi nunca funciona).