Instruções LIKE, CI e ActiveRecord

Dias atrás na lista de CodeIgniter, lançaram uma pergunta muito interessante, sobre o uso dos métodos like()/or_like() da classe Active Record, onde basicamente a dúvida era a utilização de parênteses no build do comando SQL. Na ocasião, pesquisei a respeito e não consegui achar nenhuma solução ou alternativa ao problema proposto, e o Roberteson Freitas, sugeriu um outro fix para o problema; anyway, dia desses, acabei precisando fazer uso de uma solução para isso, num sistema de um dos meus clientes...

O meu 'fix' para esse problema se deu por conta de 'gambi' que fiz com as funções where() e or_where(), onde inicialmente, o primeiro where() que abre a função de LIKE, inicia com o sinal de '(' e o último or_where(), finaliza com o sinal de encerramento das possbilidades do LIKE ')'. Caso seja necessário fazer mais de duas ou três menções de campos no LIKE, estes ficariam entre as chamadas de abertura do parêntese de abertura na função where() e o parêntese de fechamento na última chamada da função or_where().

O resultado final do código ficou assim:

 1 (...)
2 $this->db->where("id_empresa", $codcliente, FALSE);
3 $this->db->where("(campo1 LIKE '%".$_POST['txt_busca']."%'", '', FALSE);
4 $this->db->or_where("campo2 LIKE '%".$_POST['txt_busca']."%'", '', FALSE);
5 $this->db->or_where("campo3 LIKE '%".$_POST['txt_busca']."%')", '', FALSE);


Apesar da 'gambi' acima, ter sido suficiente para resolver, ainda considero o problema como um bug, uma vez que as instrução where/like/or_like, quando combinadas, acabam por condensar um AND entre as instruções, o que em muitos casos, acaba não satisfazendo a pesquisa, durante a execução do comando.