2016-08-16 13 views
0

私は 'whereBetween' eloqouentクエリを2つの指定された開始日と終了日で使用しようとしています。where雄弁なクエリが空の出力を返します

$first_day_this_month = date('Y-m-01 H:s:i'); //get the first day of the current month 
$yesterDay = date('Y-m-d H:s:i',strtotime("-1 days")); //get yesterday's date 

$d = m_chat_history::where('employee_id',$request->other_id) 
       ->whereNull('to_group')->where('to_employee_id',$request->id) 
       ->whereBetween('created_at',[$yesterDay,$first_day_this_month]) 
       ->get(); 

私は「のvar_dump」によって、クエリに必要なすべてのデータを持っていることを確認し、それは私のクエリのために必要なすべての必要なデータを与えなかったが、クエリが私の空の出力を返します。任意のアイデア、手がかり、提案、ヘルプ、推奨してください?私は 'whereBetween'を削除しようとしましたが、私のクエリは期待通りの出力を返すように動作しますが、 'whereBetween'では戻り値が空です。

+0

MySQLの日付時刻形式は次のとおりです。日付( 'YM-01 H :i:s ');あなたは 'H:s:i'の代わりに 'H:i:s'と書いています。 – Sovon

+0

「働かない」とは言わないで、「出力なし」と言ってください。違いは軽微に見えるかもしれませんが、2番目の表現はシンタックスエラーがないというサインです。 – tadman

+0

@ソヴンは「H:私:s」を試みましたが、それでも同じです。 –

答えて

2

whereBetweenの値を定義するときは、created_atと同じタイプとフォーマットを使用してください。

また
$first_day_this_month = date('Y-m-01 H:i:s'); 
$yesterday = date('Y-m-d H:i:s', strtotime("-1 day")); 

のparamsの順序のことを確認しますが(まだ月の最初の日のようなエッジケースを考えてみてください:あなたは日時を使用しているとして、あなたは(それを行うための多くの方法のひとつ)のようなエッジ値を定義することができますあなたには、いくつかのロジックを追加し、注意しなければならないので、$昨日)は、小さくなります。ここで

->whereBetween('created_at', [$first_day_this_month, $yesterday]) 

は編集:タイムスタンプされませんでした...

+0

'created_at'列のタイプが 'timestamp' –

+0

答えは試しましたが、まだ出力が空であるようには見えません。 –

+0

値の順序を変更しましたか?これは重要。 – dlondero

1

は、この、 を試してみてくださいしかし、最初のあなたはCarbonをインストールする必要があります作曲家と

use Carbon 

はその後、休閑コードに

$yesterday = Carbon::yesterday()->toDateTimeString(); 
$carbon = new Carbon('first day of ' . date('F Y')); 
$first_day = $carbon->toDateTimeString(); 

を書くことを行った後、あなたのクエリに

->whereBetween('created_at', [$first_day, $yesterday])