2017-11-18 4 views
0

Wie kann ich diese SQL-Abfrage in Laravel ausführen?Drei Tabellen Sql-Abfrage zu Laravel Abfrage

SELECT * FROM `examination` WHERE `id` in (select `exam_id` from 
`exam_supervision` where `lecturer_id` in (select `id` from `lecturers` where `id`=1)); 

Laravel scheint so konfus. Kann mir bitte jemand die genaue Laravel-Abfrage geben?

dank

Antwort

0

können Sie Verschlüsse in whereIn Abfragen verwenden.

DB::table("examination")->whereIn("id", function ($query) { 
     return $query->select("exam_id") 
      ->from("exam_supervision")->select("exam_id") 
      ->whereIn("lecturer_id", function ($query) { 
        return $query->select("id") 
           ->from("lecturers") 
           ->where("id", 1); 
      }); 
}); 

jedoch die äquivalente Syntax kann einfacher sein:

DB::table("examination") 
    ->join("exam_supervision", "examination.id", "exam_supervision.exam_id") 
    ->join("lecturers", "exam_supervision.lecturer_id", "lecturers.id") 
    ->where("lecturers.id", 1) 
    ->select(["examination.col1", "examination.col2...]); 

Es kann auch schneller sein zu verbinden (aber die Chancen sind das DBMS eine Art und Weise zu optimieren, hat bei Abfragen als Joins).