In this article, we will cover “How to implement laravel conditional query”. I would like to show your laravel eloquent if condition but laravel added a new function when(), using when() you can ignore to write manually if conditional statement and else statement. I will give you some example how to use it when and how to write if condition with eloquent query builder. you can also use when() with laravel 6, laravel 7 and laravel 8 version: Simple When() Example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?php namespace App\Http\Controllers; use App\Models\User; use Illuminate\Http\Request; class UserController extends Controller { /** * Write code on Method * * @return response() */ public function index(Request $request) { $users = User::select("*") ->when($request->has('country'), function ($query) use ($request) { $query->where('country', $request->country); }) ->get(); dd($users); } } |
When() Else Example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?php namespace App\Http\Controllers; use App\Models\User; use Illuminate\Http\Request; class UserController extends Controller { /** * Write code on Method * * @return response() */ public function index(Request $request) { $users = User::select("*") ->when($request->get('order_by') == "created_at", function ($query) { return $query->orderBy('created_at', 'desc'); }, function ($query) { return $query->orderBy('id', 'desc'); }) ->get(); dd($users); } } |
Multiple When() Condition Example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<?php namespace App\Http\Controllers; use App\Models\User; use Illuminate\Http\Request; class UserController extends Controller { /** * Write code on Method * * @return response() */ public function index(Request $request) { $users = User::select("*") ->when($request->has('country'), function ($query) use ($request) { $query->where('country', $request->country); }) ->when($request->has('state'), function ($query) use ($request) { $query->where('state', $request->state); }) ->when($request->has('name'), function ($query) use ($request) { $query->where('name', 'LIKE', '%' . $request->name .'%'); }) ->get(); dd($users); } } |
WebpreprationI’m a full-stack developer. My hobby and profession to write blog and programming tips that helps to others. I am a great admirer of PHP, Laravel, Codeigniter, AngularJS, Vue.js, Javascript, JQuery, WordPress, Plugin Development, Theme Development and Bootstrap from the early stage. webprepration.com/
read more >>