Matt
Matt

Reputation: 95

Where clause with a blank variable Laravel

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

Answers (2)

z3r0ck
z3r0ck

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

Tim Biegeleisen
Tim Biegeleisen

Reputation: 522762

You can use orWhere():

->where('subID', '=', $subid)
->orWhere('subID', '=', '');

Upvotes: 0

Related Questions