В этой статье мы реализуем laravel eloquent When Condition. В процессе фильтрации мы используем условие if-else по запросу. Проверьте код ниже.
if($request->filter_by == 'amount') { $query->where('amount', '>', request('amount', 0)); } if($request->filter_by == 'created_at') { $query->orderBy('created_at', request('order', 'desc')); }
Вы можете использовать метод When(). Он более читабелен и удобен для пользователя. Проверьте код ниже.
$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')); });
Вы можете передать третий аргумент методу When. Это замыкание будет выполнено только в том случае, если первый аргумент оценивается как ложь.
$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();
Это не только более красивый способ написать тот же «ЕСЛИ», но и отличный способ организовать условные запросы.
Подробнее о статьях такого типа можно прочитать на сайте
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3