在Laravel中仅获取今天创建的记录

115

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

我考虑使用 ->where('created_at', '>=', Carbon::now()) 但我不确定它是否有效。


17个回答

0

Post::whereDate('created_at', '=', date('Y-m-d'))->get();

这段代码将会返回今天创建的所有文章!!!如果你在这个代码中加入时间,那么你将会得到那个特定时间创建的文章而不是今天的。


1
目前你的答案写得不够清晰,请[编辑]并增加更多细节,以帮助他人了解如何回答所提出的问题。您可以在帮助中心找到有关编写良好答案的更多信息。 - Community

0

Carbon::today() 会返回类似这样的内容:2021-08-06T00:00:00.000000Z,因此使用 Model::where('created_at', Carbon::today()) 只会返回在当前日期凌晨12点创建的记录。

应该使用 Model::where('created_at', '>=', Carbon::today())


0

以下代码对我有效

  $today_start = Carbon::now()->format('Y-m-d 00:00:00');
        $today_end = Carbon::now()->format('Y-m-d 23:59:59');

        $start_activity = MarketingActivity::whereBetween('created_at', [$today_start, $today_end])
                            ->orderBy('id', 'ASC')->limit(1)->get();

0

我见过一些人使用原始查询来完成这个操作,例如:

$q->where(DB::raw("DATE(created_at) = '".date('Y-m-d')."'"));

或者不使用原始查询通过日期时间,像这样:

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

幸运的是,Laravel查询构建器提供了更优雅的Eloquent解决方案:
$q->whereDate('created_at', '=', date('Y-m-d'));

或者,当然,你可以使用Carbon代替PHP date():

$q->whereDate('created_at', '=', Carbon::today()->toDateString());

这不仅仅是 whereDate。还有三个更有用的函数可以过滤日期:

$q->whereDay('created_at', '=', date('d'));
$q->whereMonth('created_at', '=', date('m'));
$q->whereYear('created_at', '=', date('Y'));

看起来你把这段话逐字从这里复制了:https://laraveldaily.com/eloquent-date-filtering-wheredate-and-other-methods/ - Nibb

0
由于今天最好用日期来描述,我们必须使用Laravel的whereDate()函数。这对许多Laravel版本都适用。
$records = User::whereDate('created_at', date('Y-m-d'))->get();

或者

use Carbon\Carbon;
$records = User::whereDate('created_at',  Carbon::today())->get();

-1

$records = User::where('created_at' = CURDATE())->GET()); print($records);

$records = User :: where ('created_at'= CURDATE ()) - & gt; GET(); 打印($ records);


1
虽然这段代码可能回答了问题,但提供有关它如何以及/或为什么解决问题的附加上下文将改善答案的长期价值。阅读此内容 - Shanteshwar Inde

-1

我在2022年4月22日使用laravel9,如何获取“今天”的记录:

  1. 我编辑了“config/app.php”文件中的“timezone”(大约在第72行),将其设置为我的时区“Asia/Bangkok”

  2. 我的查询代码如下:

    $get = User::whereDate("created_at","=",date("Y-m-d",time() ) )->get();

将获取今天创建的字段。

我不知道这是否是正确的方法或者是否有更好的代码,但只要它对我有效,我就没问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接