[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Rafael Belchior da Silva
Criador Rafael Belchior da Silva 12/09/2022

Eae professor blz? Estava eu aqui em um projeto meu fazendo uma paginação e me deparei com uma duvida simples:

Fiz uma paginação de duas formas, queria saber se existe uma que está mais correta ou não. Fiz de um jeito utlizando o metodo when do eloquent, ficou desse jeito os dois jeitos:

 

Jeito 1-)

  $user = User::where(function ($query) use ($search) {
            if ($search) {
                $query->where('name', 'like', "%{$search}%");
                $query->orWhere('email', $search);
                $query->orWhere('city', 'like', "%{$search}%");
                $query->orWhere('state', 'like', "%{$search}%");
                $query->orWhere('country', 'like', "%{$search}%");
            }
        })
        ->orderBy('id', 'desc')
        ->paginate(3);

 

Jeito 2-) Usando WHEN ( quando ter $search , faça. Ta correto desse jeito tmb? Poderia me dizer qual eu poderia deixar e usar em meus projetos? Ou tanto faz?

$user = User::when(function ($query) use ($search) {
            $query->where('name', 'like', "%{$search}%");
            $query->orWhere('email', $search);
            $query->orWhere('city', 'like', "%{$search}%");
            $query->orWhere('state', 'like', "%{$search}%");
            $query->orWhere('country', 'like', "%{$search}%");    
        })
        ->orderBy('id', 'desc')
        ->paginate(3);
 
 
 
Manager Carlos Ferreira 12/09/2022

Olá, Rafael!
Tudo bem?

O paginate no seu caso é o mesmo, para das duas querys.

O que mudou, foi apenas a forma como aplicou os filtros na query final, em uma você usou o when, e na outra o where. Mas o funcionamento do método paginate não muda para nenhuma delas, ou seja, o que essas querys retornar de resultado, o paginate lida com isso e te devolve.

Pegou a ideia amigo? 🙂

Carlos Ferreira
Criador Rafael Belchior da Silva 12/09/2022

sim sim professor, entendi e peguei a ideia. Entao logo as duas querys estao corretas? A minha duvida era só essa, se qual das duas estava "melhor" e qual das duas vc escolheria para aplicar no filtro, pq ao usar o when, na minha cabeça nao preciso fazer um if como eu fiz na primeira. Estou certo? 

Rafael Belchior da Silva
Manager Carlos Ferreira 12/09/2022

Está certo, particularmente gosto mais do where, mas por questões de costume mesmo.

Carlos Ferreira
Criador Rafael Belchior da Silva 12/09/2022

Blz, TMJ

Rafael Belchior da Silva
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!