2016-04-16 6 views
0

私は、ユーザーが2つの日付範囲を指定するいくつかの特定のデータのレポートを作成する必要があります。その範囲の間にデータを表示する必要があります。 そのユーザーの入力日にクエリを実行する方法はありますか?ここでlaravel:SQLでユーザー入力のクエリを実行するには?

は私のコントローラです:

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]); 
    } 

そのSQLクエリに今して(この2つの入力データを渡す方法を

+0

エラー? – ssuhat

答えて

0

と?試してみてください:

$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

あなたの質問にgroupByの問題があると思っています。できるだけonece.ifをチェックしてください。 – User57

+0

あなたは試しましたか?エラーとは何ですか?私はそれを更新しました。それは行方不明です。 – ssuhat

+0

修正されました。私の間違い。 – ssuhat

0

使用DB ::生の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])); 
関連する問題