Laravel 5 Eloquent where and or in Clauses

前端 未结 4 1010
轮回少年
轮回少年 2021-01-30 07:58

i try to get results from table with multiple where and/or clauses.

My SQL statement is:

SELECT * FROM tbl
WHERE m__Id = 46
AND
t_Id = 2
AND
(Cab = 2 OR          


        
相关标签:
4条回答
  • 2021-01-30 08:32

    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')

    0 讨论(0)
  • 2021-01-30 08:35

    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();
    
    0 讨论(0)
  • 2021-01-30 08:38

    You can try to use the following code instead:

     $pro= model_name::where('col_name', '=', 'value')->get();
    
    0 讨论(0)
  • 2021-01-30 08:52

    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();
    
    0 讨论(0)
提交回复
热议问题