Laravel 5 Eloquent where and or in Clauses
Using advanced wheres:
CabRes::where('m__Id', 46) ->where('t_Id', 2) ->where(function($q) { $q->where('Cab', 2) ->orWhere('Cab', 4); }) ->get();
Or, even better, using whereIn()
:
CabRes::where('m__Id', 46) ->where('t_Id', 2) ->whereIn('Cab', $cabIds) ->get();
When we use multiple and
(where) condition with last (where + or where) the where condition fails most of the time. for that we can use the nested where function with parameters passing in that.
$feedsql = DB::table('feeds as t1') ->leftjoin('groups as t2', 't1.groups_id', '=', 't2.id') ->where('t2.status', 1) ->whereRaw("t1.published_on <= NOW()") >whereIn('t1.groupid', $group_ids) ->where(function($q)use ($userid) { $q->where('t2.contact_users_id', $userid) ->orWhere('t1.users_id', $userid); }) ->orderBy('t1.published_on', 'desc')->get();
The above query validate all where condition then finally checks where t2.status=1 and (where t2.contact_users_id='$userid' or where t1.users_id='$userid')