2017-07-10 20 views
1

に2つの日付の間である私は、テーブルがlaravel 5.4

+---------------------+----------- 
    | id | start_date  | End_date | 
    +---------------------+-----------+ 
    | 1 | 2017-07-07 | 2017-07-31| 
    | 2 | 2017-08-01 | 2017-08-31| 
    | 3 | 2017-09-01 | 2017-09-10| 
    | 
    +------+--------------+-----------+ 

を持っていると私は2 dates.I間の日付を選択するクエリ

SELECT * FROM Financial_Year WHERE CURDATE() between `start_date` and `End_date` 

を持っている私がしたいですこのクエリはので、私はこの

$dt = Carbon::now(); 
$getmonths= DB::table('Financial_Year') 
        ->whereBetween($dt, ['start_date', 'End_date'])->get(); 

を試してみましたが、私は助けをいただければ幸いですoutput.Any取得できませんでしたlaravelに変換します。

+0

'End_date'は、おそらくあなたのケースでは、' end_date'すべきですか?それは誤植ですか? –

+0

@SagarGautamは本当にエラーですか.. ??説明する! –

+0

クエリビルダは、通常、最初のパラメータが列名であり、他の値は値であると仮定していますが、ここではその逆の方向に ''(どこでも\ DB :: raw( "$ dt BETWEEN start_dataとend_date")) 、あなたは生のdbクエリを使用する場合も同様に炭素の代わりに 'CURDATE()'を使用するかもしれません。 – apokryfos

答えて

2

ここでは、これを達成するために、laravel whereRaw()を使用できます。

ちょうどこの

$dt = Carbon::now(); 
$getmonths= DB::table('Financial_Year') 
    ->whereRaw('"'.$dt.'" between `start_date` and `End_date`') 
    ->get(); 
+0

未処理のクエリが機能し、laravelクエリが機能しない理由を説明できますか? –

+3

'between between'は日付だけではなく数値でしか動作しません。 – lewis4u

+0

@Bibhudatta Sahoo ...ありがとうございます...その作業 –

1

のようにあなたは、このためにカーボンネイティブ関数を使用することができます。

http://carbon.nesbot.com/docs/

$first = Carbon::create(2012, 9, 5, 1); 
$second = Carbon::create(2012, 9, 5, 5); 
var_dump(Carbon::create(2012, 9, 5, 3)->between($first, $second)); // bool(true) 
var_dump(Carbon::create(2012, 9, 5, 5)->between($first, $second)); // bool(true)