Neste artigo, estamos implementando laravel eloquent quando condição. No processo de filtragem, usamos a condição if-else mediante solicitação. Verifique o código abaixo.
if($request->filter_by == 'amount') { $query->where('amount', '>', request('amount', 0)); } if($request->filter_by == 'created_at') { $query->orderBy('created_at', request('order', 'desc')); }
Você pode usar o método when(). É mais legível e fácil de usar. Verifique o código abaixo.
$query = Order::query(); $query->when(request('filter_by') == 'amount', function($q){ return $q->where('amount','>', request('amount',0)); }); $query->when(request('filter_by') == 'created_at', function($q){ return $q->orderBy('created_at', request('order','desc')); });
Você pode passar o terceiro argumento para o método when. Este encerramento só será executado se o primeiro argumento for avaliado como falso.
$query = Order::query(); $query->when(request('filter_by') == 'amount', function($q){ return $q->where('amount','>', request('amount',0)); }, function($q){ return $q->orderBy('created_at', request('order','desc')); })->get();
Não é apenas uma maneira mais bonita de escrever o mesmo "IF", mas também é uma ótima maneira de organizar consultas condicionais.
Você pode ler mais sobre esse tipo de artigo no site
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3