Eu não sei sobre o Symfony, mas você pode substituir
a ILIKE b
com
lower(a) LIKE lower(b)
Você também pode tentar o operador
~~*
, que é sinônimo de ILIKE
Ele tem precedência de operador um pouco menor, então você pode precisar de parênteses para strings concatenadas onde você não precisaria com ILIKE
a ILIKE b || c
torna-se
a ~~* (b || c)
O manual sobre correspondência de padrões, começando com
LIKE
/ ILIKE
.
Acho que esse cara teve o mesmo problema e obteve uma resposta:
http://forum.symfony-project.org/viewtopic.php?f=23&t=40424
Obviamente, você pode estender o Symfony2 com funções específicas do fornecedor SQL:
http://docs.doctrine-project.org/projects/doctrine-orm/en/2.1/cookbook/dql-user-defined-functions.html
Eu não sou fã de ORMs e frameworks massacrando a rica funcionalidade do Postgres apenas para permanecer "portátil" (o que quase nunca funciona).