2016-10-19 17 views
1

私のデータベース(MySQL)にはcreated_atのタイムスタンプフィールドがあります。日付比較のためのLaravel 5クエリービルダーとNOW()日付

次のように私はタイムスタンプを持つ2つのエントリを持つ:

  • 2017年12月12日午後06時25分00秒
  • 2016年10月2日18時00分00秒

を今日は2016年10月19日です(将来の参照用に)。私は次のクエリを使用している場合、私は結果を得るません:

$job = $jobs->where('closing_at', '>=', 'NOW()') 
      ->orderBy($sorter[0], $sorter[1])->paginate(24); 

私は日付をハードコーディングした場合、私は、ちょうど1つの将来の日付を正しい結果を得る:

$job = $jobs->where('closing_at', '>=', "2016-10-19 00:00:00") 
      ->orderBy($sorter[0], $sorter[1])->paginate(24); 

私は私の誤りを想定していますEloquentクエリビルダでNOW()を使用していますが、これを使用する正しい方法がわかりません。

雄弁クエリビルダは、それらの特定のSQL関数を受け入れませんが、それはあなたのPHP内で行われますよう、簡単に偉大なカーボンクラスを使用することができます
+0

DB ::生やwhereRaw役立つはずあなたhttps://laravel.com/docs/5.3/queries#raw-expressions – xAoc

+2

の代わりにNOW() \ Carbon :: now() –

+0

使用日( "Ymd H:i:s")または\ Carbon :: now() –

答えて

1

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

use Carbon\Carbon;

そして、

$job = $jobs->where('closing_at', '>=', Carbon::now()) 
     ->orderBy($sorter[0], $sorter[1])->paginate(24); 

それはトリックを行う必要があります。

がありまたwhereDate()雄弁方法であって、https://laravel.com/docs/5.3/queries#where-clauses

+0

それはそうです。 Eloquentが基本的なSQL関数を受け入れないというのは私には意味がありませんが、機能します。ありがとう – TH1981

+0

これは、DB :: object:https://laravel.com/docs/5.3/queriesでは動作しますが、最初は "PHPによって管理されている"ため、雄弁に呼ばれるモーダルではありません。 – 2Fwebd