只获取今天在laravel中创建的记录

问题描述 投票:34回答:8

如何使用created_at字段仅获取今天创建的记录,而不是其他日期或时间?

我在考虑一个->where('created_at', '>=', Carbon::now())但是我不确定那会起作用。

mysql date activerecord where laravel-5.1
8个回答
54
投票

对于Laravel 5.6+用户,您可以这样做

    $posts = Post::whereDate('created_at', Carbon::today())->get();

快乐的编码


51
投票

使用Mysql默认CURDATE函数来获取当天的所有记录。

    $records = DB::table('users')->select(DB::raw('*'))
                  ->whereRaw('Date(created_at) = CURDATE()')->get();
    dd($record);

注意

Carbon::nowCarbon::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"

Query Builder Docs


33
投票

如果你在Laravel中使用Carbon(你应该,它真棒!),你可以简单地做到以下几点:

->where('created_at', '>=', Carbon::today())

除了now()today(),您还可以使用yesterday()tomorrow()然后使用以下内容:

  • startOfDay() / endOfDay()
  • startOfWeek() / endOfWeek()
  • startOfMonth() / endOfMonth()
  • startOfYear() / endOfYear()
  • startOfDecade() / endOfDecade()
  • startOfCentury() / endOfCentury()

11
投票

含碳:

return $model->where('created_at', '>=', \Carbon::today()->toDateString());

没有碳:

return $model->where('created_at', '>=', date('Y-m-d').' 00:00:00');

5
投票

如果不考虑时区,则可以使用whereRaw('date(created_at) = curdate()'),否则使用whereRaw('date(created_at) = ?', [Carbon::now()->format('Y-m-d')] )

由于created_at字段是时间戳,因此您只需要获取日期部分并忽略时间部分。


2
投票
$today = Carbon\Carbon::now()->format('Y-m-d').'%';
->where('created_at', 'like', $today);

希望它会对你有所帮助


-2
投票

无需使用Carbon::today,因为laravel使用函数now()而不是辅助函数

因此,要获取今天创建的任何记录,您可以使用以下代码:

Model::whereDay('created_at', now()->day)->get();

您需要使用whereDate,因此created_at将转换为日期。


-3
投票

$ records = User :: where('created_at'= CURDATE()) - > GET());打印($记录);

© www.soinside.com 2019 - 2024. All rights reserved.