Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Selecionar Produtos do Banco com ignore case

Pessoal preciso de um help, gostaria de pesquisar um Produto por nome sem diferenciar letras maiuscula de minuscula.

$nome=Request::input('nome'); //Já vi que a variável recebe os valores da view sem problemas
$produtos = Produto::all()->where('nome',$nome);

Tenho no bando de dados o produto com o nome='Mouse' Quando pesquiso o produto pelo nome 'mouse', por exemplo, não retorna produto algum.

Já verifiquei as configurações do banco de dados e da conexão referente ao charset e collation e está assim:

'charset'   => 'utf8',
'collation' => 'utf8_unicode_ci',

Tentei desta forma também e não funcionou:

$nome=Request::input('nome'); //Já vi que a variável recebe os valores da view sem problemas
$produtos = Produto::all()->where('nome','LIKE','%'.$nome.'%');

Se puderem me ajudar, eu agradeço.

3 respostas

oi Rudimar, tudo bem ?

O que voce pode fazer, é transformar tudo em maiúsculo, ou tudo para minúsculo. (Tanto no mysql, quanto no php)

Tente fazer o seguinte:

$nome=Request::input('nome'); //Já vi que a variável recebe os valores da view sem problemas
WHERE LOWER(foo) = LOWER("bar")
$produtos = Produto::all()->where(LOWER('nome'), strtolower($nome));

Olá Caio, obrigado pelo retorno, mas não funcionou!

Tentei usar da seguinte forma:

$produtos= Produto::all()->where('LOWER(nome)','LIKE','%'.strtolower($nome).'%');

Não retorna nada.

E tentei usar como você passou também e retorna um erro.

$produtos= Produto::all()->where(LOWER('nome'),'LIKE','%'.strtolower($nome).'%');

Retorna: "Call to undefined function app\Http\Controllers\Cadastro\LOWER()"

Se tiver outra dica, eu agradeço!

solução!

Consegui resolver desta forma:

$produtos= Produto->where("nome","like","%{$nome}%")->get();

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software