4
respostas

Filtro de Busca DÚVIDA

Bom di Vinícius ,

De acordo com aprendizado no curso estou tentando aplicar no meu dia-a-da

No filtro de busca no INPUT descrição tem como quando eu digitar "ã" ou "a" trazer o resultado da busca . No Laravel tem alguma forma de fazer isso ?

Se eu digitar SÃO PAULO ou SAO PAULO realizar a busca do mesmo jeito , a variável em questão é $search. $query->where(\DB::raw('upper(nome)'), 'LIKE', '%' . mb_strtoupper($search) . '%')

 $search = $request->get('search');  
        $status = $request->get('status');  


        $periodicos = Periodico::when($search, function ($query, $search) {
            $query->where(function($query) use ($search){
                $query->where(\DB::raw('upper(nome)'), 'LIKE', '%' . mb_strtoupper($search) . '%')
                ->orWhere(\DB::raw('upper(issn)'), 'LIKE', '%' . mb_strtoupper($search) . '%')
                ->orWhere('codigo', 'LIKE', $search);
            });
        })
        ->when($status, function ($query, $status) {
            $query->where(\DB::raw('upper(st)'), 'LIKE', mb_strtoupper($status));
        })
        ->orderBy('nome')
        ->paginate(25);
4 respostas

Fala, Rafael.

Essa dúvida foge do escopo de Laravel e entra no de bancos de dados e SQL. Acho que um especialista dessa área te ajudaria melhor...

Uma abordagem possível é utilizar regex. Algo como S(Ã|A)O PAULO, entende?

Entendi Vinícius , Muito Obrigado vou pesquisar algo aqui no Oracle direto então

Olá Rafael,

Isso realmente pode ser melhor tratado pelo lado do banco de dados como o Vinicius já mencionou. Nunca utilizei muito o Oracle, mas sei que você pode fazer buscas case insensitive e accent insensitive apenas configurando a collation de sua tabela.

Eu tenho um banco (no MySQL) com a collation utf8mb4_0900_ai_ci, e uma tabela nele com a collation utf8mb4_unicode_ci, nesse ambiente eu consigo fazer a seguinte busca:

select * from laratest.users where name like 'joao';

# Isso inclui o nome "João" no resultado

Infelizmente não posso lhe ajudar mais no caso específico do Oracle, mas acredito que seja possível fazer algo semelhante, e talvez o seu banco até já esteja com isso configurado. Lembrando que o teste mostrado acima foi feito no MySQL.

Olá Lucas ,

Obrigado pela dica pelos menos já sei por onde direcionar a pesquisa , desde já agradeço a ajuda .