如何使用created_at
字段仅获取今天创建的记录,而不是其他日期或时间?
我在考虑一个->where('created_at', '>=', Carbon::now())
但是我不确定那会起作用。
对于Laravel 5.6+用户,您可以这样做
$posts = Post::whereDate('created_at', Carbon::today())->get();
快乐的编码
使用Mysql
默认CURDATE
函数来获取当天的所有记录。
$records = DB::table('users')->select(DB::raw('*'))
->whereRaw('Date(created_at) = CURDATE()')->get();
dd($record);
注意
Carbon::now
和Carbon::today
之间的差异只是时间。
e.g
通过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);
希望它会对你有所帮助
无需使用Carbon::today
,因为laravel使用函数now()而不是辅助函数
因此,要获取今天创建的任何记录,您可以使用以下代码:
Model::whereDay('created_at', now()->day)->get();
您需要使用whereDate
,因此created_at将转换为日期。
$ records = User :: where('created_at'= CURDATE()) - > GET());打印($记录);