created_at
フィールドを使用して、今日作成されたレコードのみを取得し、他の曜日または時刻を取得しないようにするにはどうすればよいですか?
私は->where('created_at', '>=', Carbon::now())
を考えていましたが、それがうまくいくかどうかはわかりません。
Laravel 5.6人以上のユーザーの場合、次のようにできます。
$posts = Post::whereDate('created_at', Carbon::today())->get();
ハッピーコーディング
Mysql
default CURDATE
関数を使用して、その日のすべてのレコードを取得します。
$records = DB::table('users')->select(DB::raw('*'))
->whereRaw('Date(created_at) = CURDATE()')->get();
dd($record);
注
Carbon::now
とCarbon::today
の違いは時間です。
例えば
Carbon::now
を介して印刷された日付は次のようになります。
2018-06-26 07:39:10.804786 UTC (+00:00)
Carbon::today
の場合:
2018-06-26 00:00:00.0 UTC (+00:00)
now
で今日作成されたレコードのみを取得するには、次のように取得できます。
Post::whereDate('created_at', Carbon::now()->format('m/d/Y'))->get();
today
の場合:
Post::whereDate('created_at', Carbon::today())->get();
UPDATE
laravel 5.3現在、デフォルトのwhere節whereDate / whereMonth / whereDay / whereYear
があります
$users = User::whereDate('created_at', DB::raw('CURDATE()'))->get();
またはDB
ファサード付き
$users = DB::table('users')->whereDate('created_at', DB::raw('CURDATE()'))->get();
上記のwhere句の使用法
$users = User::whereMonth('created_at', date('m'))->get();
//or you could also just use $carbon = \Carbon\Carbon::now(); $carbon->month;
//select * from `users` where month(`created_at`) = "04"
$users = User::whereDay('created_at', date('d'))->get();
//or you could also just use $carbon = \Carbon\Carbon::now(); $carbon->day;
//select * from `users` where day(`created_at`) = "03"
$users = User::whereYear('created_at', date('Y'))->get();
//or you could also just use $carbon = \Carbon\Carbon::now(); $carbon->year;
//select * from `users` where year(`created_at`) = "2017"
LaravelでCarbonを使用している場合(そして、それは素晴らしいはずです!)、次のことを行うことができます。
->where('created_at', '>=', Carbon::today())
now()
とtoday()
に加えて、yesterday()
とtomorrow()
を使用して、次を使用することもできます。
startOfDay()
/endOfDay()
startOfWeek()
/endOfWeek()
startOfMonth()
/endOfMonth()
startOfYear()
/endOfYear()
startOfDecade()
/endOfDecade()
startOfCentury()
/endOfCentury()
カーボンあり:
return $model->where('created_at', '>=', \Carbon::today()->toDateString());
炭素なし:
return $model->where('created_at', '>=', date('Y-m-d').' 00:00:00');
タイムゾーンが重要でない場合はwhereRaw('date(created_at) = curdate()')
を使用でき、そうでない場合はwhereRaw('date(created_at) = ?', [Carbon::now()->format('Y-m-d')] )
を使用できます。
created_at
フィールドはタイムスタンプであるため、日付部分のみを取得し、時間部分を無視する必要があります。
$today = Carbon\Carbon::now()->format('Y-m-d').'%';
->where('created_at', 'like', $today);
それがあなたを助けることを願っています