Brother, eu tava pensando em fazer isso em alguma coisa com os métodos __get, criando alguma função como a "translate" do postgresql. Sei lá... mas como vc é o mestre do SQLReactor, da forma que vc implementar tá bom pra comunidade.
Talvez algo assim pode ser bom:
$model->searchCallback("retira_acentos->lower","LIKE","nome");
Onde:
- $model é o model baseado no SQLReactor;
- searchCallback seria a função que executa o que segue abaixo:
* seria uma função ou sequência de funções aninhadas no banco (WHERE retira_acentos(lower(nome))...);
* seria o operador (LIKE, ==, <, >, <>);
* campo que deve ser submetido às funções do primeiro parâmetro;
Acho que com isso dai, brother, todo mundo pode fazer bastante coisa.
Segue abaixo a função retira acentos que uso nos meus sistemas e que me salva de todas as enrascadas de busca que preciso em campos de texto:
CREATE OR REPLACE FUNCTION epaper_casacivil.retira_acentos(character varying)
RETURNS character varying AS
$BODY$
SELECT upper(translate( $1,varchar 'áéíóúàèìòùãõâêîôôäëïöüçÁÉÍÓÚÀÈÌÒÙÃÕÂÊÎÔÛÄËÏÖÜÇ',varchar 'aeiouaeiouaoaeiooaeioucAEIOUAEIOUAOAEIOOAEIOUC'));
$BODY$
LANGUAGE 'sql' VOLATILE
COST 100;