Laravel 5 Eloquent where and or in Clauses Laravel 5 Eloquent where and or in Clauses laravel laravel

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();


Also, if you have a variable,

CabRes::where('m_Id', 46)      ->where('t_Id', 2)      ->where(function($q) use ($variable){          $q->where('Cab', 2)            ->orWhere('Cab', $variable);      })      ->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')