Reputation: 95
I use GET, to collect a variable :
$subid = $_GET['subid'];
In my DB Query i have the following :
->where('subID', '=', $subid)
Now if the variable $subid is blank , the result returns no information. How do i specify in the query that if the variable $subid is blank or empty, return all results?
Upvotes: 1
Views: 737
Reputation: 683
You can use when
.
->when($subid, function ($query) use ($subid) {
return $query->where('subID', '=', $subid);
})
If $subid is false the where condition won't be applied to the query.
Check out the doc https://laravel.com/docs/5.2/queries#conditional-statements
UPDATE:
Any expression that you can be used inside an if
call can be used as the first argument of when
An example :
->when($fromDate && $toDate, function($query) use ($fromDate, $toDate) {
return $query->whereBetween('CompletedDate', array($fromDate, $toDate));
})
Upvotes: 3
Reputation: 522762
You can use orWhere():
->where('subID', '=', $subid)
->orWhere('subID', '=', '');
Upvotes: 0