Dans cet article, nous implémentons Laravel éloquent when condition. Dans le processus de filtrage, nous utilisons la condition if-else sur demande. Vérifiez le code ci-dessous.
if($request->filter_by == 'amount') { $query->where('amount', '>', request('amount', 0)); } if($request->filter_by == 'created_at') { $query->orderBy('created_at', request('order', 'desc')); }
Vous pouvez utiliser la méthode when(). Il est plus lisible et convivial. Vérifiez le code ci-dessous.
$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')); });
Vous pouvez passer le troisième argument à la méthode when. Cette fermeture ne s'exécutera que si le premier argument est évalué comme faux.
$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();
Ce n'est pas seulement une façon plus jolie d'écrire le même "IF", mais c'est aussi un excellent moyen d'organiser les requêtes conditionnelles.
Vous pouvez en savoir plus sur ce type d'article sur le site
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!