2016-04-16 4 views
0

Ich muss einen Bericht über bestimmte Daten machen, wo der Benutzer zwei Datumsbereiche angibt. also muss ich Daten zwischen diesem Bereich anzeigen. Wie wird die Abfrage für dieses Benutzereingabedatum ausgeführt?Laravel: Wie Abfrage für Benutzereingabe in SQL ausführen?

Hier ist mein Controller:

public function reportByDate(Request $request){ 
     $now = $request->Input(['sdate']); 
     $then=$request->Input(['edate']); 
     $input = DB::select('SELECT sum(fee), courses.name FROM `fees` JOIN 
        courses on fees.course_id=courses.id join 
        users on courses.id =users.course_id 
        where users.completed_status=1 AND users.date between 'now' AND 'then' group by fees.course_id'); 

    return view('revenueDetails','input'=>$input]); 
    } 

Wie diese zwei Eingangsdaten (jetzt passieren und dann in dieser SQL-Abfrage

+0

sind Ihre Abfrage zurück Sie keine Error? – ssuhat

Antwort

0

Versuchen Sie Folgendes:

$input = DB::table('fees')->join('courses', 'fees.course_id', '=','courses.id') 
      ->join('users', 'users.course_id', '=', 'courses.id') 
      ->where('users.completed_status', 1) 
      ->whereBetween('users.date', [$now, $then]) 
      ->groupBy('fees.course_id') 
      ->selectRaw('SUM(fee), courses.name') 
      ->get(); 
+0

gibt es ein Problem mit Ihrer Abfrage, groupBy ich denke, überprüfen Sie onece.if möglich – User57

+0

Sie haben versucht? Was ist der Fehler? Ich habe es aktualisiert. es fehlt "". – ssuhat

+0

Behoben. Mein Fehler. – ssuhat

0

Verwenden DB :: raw mit params

$input = DB::select(DB::raw('SELECT sum(fee), courses.name FROM `fees` JOIN 
       courses on fees.course_id=courses.id join 
       users on courses.id =users.course_id 
       where users.completed_status=1 AND users.date between 
       :now AND :then group by fees.course_id', 
       ["now" => $now, "then" => $then])); 
Verwandte Themen