Eloquent select rows with empty string or null value
I always encourage to create queries with the main Laravel functions that are most used. That's why you must have 2 things in mind:
- algorithm. key1 = value1 AND key2 = value2 OR key3 = value3. Be very carreful about precedence because in the way I exemplified there will be a main OR not an AND with OR inside
- using where(), whereIn(), whereNull and closure instead of whereRaw(). whereRaw is using more memory than any others I mentioned.
So, to resume your answer:
OR condition
$users = DB::table('users')
->where('col', '=', '')
->orWhere('col','=','')
->whereNull('col')
->get();
AND and OR condition
$users = DB::table('users')
->where(function($query) { $query->where('col','=','')->orWhere('col','=','')->whereNull('col'); })
->where('col','=','')
->get();
Try this query:
$users = DB::table('users')
->whereRaw('col = "" OR col IS NULL')
->get();
How about this:
$user->albums()->whereRaw("NOT col > ''")
This way you can check both conditions at the same time
Try using orWhereNull
for the second clause:
$users = DB::table('users')
->where('col', '=', '')
->orWhereNull('col')
->get();