2017-12-12 13 views
2

で次のように私は、SQLクエリを持っている:私は何ができるLaravelで生のクエリではorWhereを組み合わせることで、どこLaravel

SELECT * FROM AS T 
INNER JOIN TABLE2 AS T2 ON T1.id =T2.tid 
WHERE (t1.userid= $userid AND t1.unitid IN (2,3)) 
    OR (t2.requesterid=$userid AND  t2.requestertype IN(1,5)) 

を:

DB::table("TABLE1 as T1") 
->join("TABLE2 as T2", "T1.userttype", " =","T2.tid") 
->whereRaw("(t1.userid= $userid AND t1.unitid IN  (2,3)) OR (t2.requesterid=$userid AND t2.requestertype IN(1,5)")->get(); 

しかし、どのように、これはLaravel orWhere構造によって達成することができます。私はそれを試しました:

DB::table("TABLE1 as T1") 
    ->join("TABLE2 as T2", "T1.userttype", "=", "T2.tid") 
    ->where(function($query) use ($userid) { 
     $query->where("t1.userid", $userid) 
       ->whereIn("t1.unitid", [2,3]) 
       ->orwhere("t2.requesterid", $userid) 
       ->whereIn("t2.requestertype", [1,5]) 
    }); 

どのようにこれを行うことができますか?

答えて

2

2つの内部機能を試してください。試してみてください:

DB::table("TABLE1 as T1") 
->join("TABLE2 as T2", "T1.userttype", "=", "T2.tid") 
->where(function($query) use ($userid) { 
     $query->where("t1.userid", $userid) 
      ->whereIn("t1.unitid", [2,3]); 
})->orWhere(function($query) use ($userid) { 
     $query->where("t2.requesterid", $userid) 
      ->whereIn("t2.requestertype", [1,5]); 
}); 
関連する問題