2016-06-23 4 views
1

間のmysqlからクエリデータ、予想される動作は次のとおりです。Laravel - 私は、以下のクエリを使用して、私のテーブルから行を取得し、問題が生じています日付

ユーザーは、フォームで開始/終了日を選択して提出するヒットとデータ関数&に渡され、クエリで使用されます。

フォームのデータが正常に入力されています&日付がクエリに入力されていることを検証しましたが、何らかの理由でクエリが常にゼロの結果を返しますか?日付のWHERE文を削除すると、クエリは正常に動作します。&は結果を生成するため、問題は日付と関係しています。

$fromDate = $request->fromDate; 
$toDate = $request->toDate; 

$data = cc_table::all('*') 
    ->where('link', '1') 
    ->where('created_at', '>', $fromDate) 
    ->where('created_at', '<', $toDate) 
    ->toArray(); 

フォームから日付がDD/MM/YYYYとしてフォーマットされ、そしてのcreated_atの日付がスタンプされ、しかし試験のために私はDATEであることのcreated_atを変更しなかった(DD/MM/YYYY)がクエリそれでもゼロ行を返します。

はFYI - 私はちょうど私のフォーム上のjqueryの日付ピッカーを使用しています:

$(function() { 
    $("#fromDate").datepicker(); 
    }); 
    </script> 
+0

なぜyyyy-mm-ddを使用しないのですか? – Strawberry

答えて

2

はこれで試してみる:

$fromDate = Carbon::parse($request->input('fromDate'))->format('Y-m-d'); 
$toDate = Carbon::parse($request->input('toDate'))->format('Y-m-d'); 
$date_range = [$fromDate . ' 00:00:00', $toDate . ' 23:59:59']; 

$data = cc_table::where('link', '1') 
->whereBetween('created_at', $date_range) 
->get(); 

$date_rangeのフォーマットは、MySQLの列の種類に依存します。

注:上記のコードスニペットを使用して、スクリプトの先頭に必ずuse Carbon\Carbon;を入れてください。

+1

これは素晴らしく、完璧に働きました。 –

+1

また、 'whereBetween'のおかげで - 私はこれをLaravel Docsで見落としました。ありがとう –

関連する問題