Re: Dúvida sobre recuperação de registros

3 views
Skip to first unread message

Rafael Martins

unread,
Dec 10, 2009, 8:25:47 AM12/10/09
to SQLReactor Brasil
Talvez algo assim:

array( SQLReactor::$func->lower( 'name' ) , '==', SQLReactor::$func->lower( 'bla' ) )

[]s,
Snit

2009/12/10 Rafael Martins <snit...@gmail.com>
Falae,

Cara, infelizmente nao da pra fazer isso e nem pensei ainda numa forma de fazer. Ja pensei q talvez fosse legal disponibilizar isso, mas ainda não parei pra pensar a fundo no assunto.

Se tiver alguma ideia me avisa.

[]s,
Snit

2009/12/9 Evaldo Barbosa <tryades...@gmail.com>

Snit, boa noite, camarada.

Andei fazendo bastante coisas com o SQLReactor mas tive uma dúvida em uma coisa sobre recuperação de registros: o submetimento de campos a funções/procedures como condições, ou seja, comparar campos em LOWER, UPPER ou alguma função customizada. Em SQL eu faria algo assim:
WHERE LOWER(retira_acentos(nome)) = LOWER(retira_acentos({$nome})
Pergunto isso pois fica mais fácil fazer busca em caixa baixa e sem acentos (eu tenho uma função retira_acentos que uso há muito tempo em Postgresql) e no SQLReactor eu ainda não tenho idéia de como fazer.
Não sei se você já faz isso de alguma maneira ou se tem alguma sugestão. Se puder, me dê uma ajuda nisso.

Atenciosamente,

Evaldo Barbosa
Analista de Sistemas / Desenvolvedor Web

http://www.vivaolinux.com.br/~collapse
http://www.twitter.com/evaldobarbosa
http://www.via6.com.br/evaldobarbosa


Evaldo Barbosa

unread,
Dec 10, 2009, 8:39:59 PM12/10/09
to sqlreact...@googlegroups.com
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;
2009/12/10 Rafael Martins <snit...@gmail.com>
--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito no Grupo "SQLReactor Brasil" nos Grupos do Google.
 Para postar neste grupo, envie um e-mail para sqlreact...@googlegroups.com
 Para cancelar a sua inscrição neste grupo, envie um e-mail para sqlreactor-bra...@googlegroups.com
 Para ver mais opções, visite este grupo em http://groups.google.com/group/sqlreactor-brasil?hl=pt-BR

-~----------~----~----~----~------~----~------~--~---


Reply all
Reply to author
Forward
0 new messages