whereBetween 不使用 Carbon::parse()->subDay() & 当前日期 laravel
Posted
技术标签:
【中文标题】whereBetween 不使用 Carbon::parse()->subDay() & 当前日期 laravel【英文标题】:whereBetween not working with Carbon::parse()->subDay() & current day laravel 【发布时间】:2020-12-11 23:05:24 【问题描述】:我想查询两个日期之间的时间
这是运行良好的代码
whereBetween('created_at', [now()->subDay()->format('Y-m-d') . ' ' . $tgame->start_time->format('H:i:s'), now()->format('Y-m-d') . ' ' . $tgame->end_time->format('H:i:s')]
但此代码不起作用
$date = Carbon::parse($request->date);
whereBetween('created_at', [$date->subDay()->format('Y-m-d') . ' ' . $tgame->start_time->format('H:i:s'), $date->format('Y-m-d') . ' ' . $tgame->end_time->format('H:i:s')]
请解释一下谢谢
【问题讨论】:
$request->date
和 now()
可能不同。
【参考方案1】:
在$date
对象上调用subDay()
会将Carbon 对象中的时间设置回24 小时。所以在whereBetween
的上边界,您使用的不是请求日期,而是 24 小时前的那个。
要实现你想要的,你需要在改变之前复制对象:
...->whereBetween('created_at', [$date->copy()->subDay()->format('Y-m-d') . ' ' . $tgame->start_time->format('H:i:s'), $date->format('Y-m-d') . ' ' . $tgame->end_time->format('H:i:s')]
【讨论】:
以上是关于whereBetween 不使用 Carbon::parse()->subDay() & 当前日期 laravel的主要内容,如果未能解决你的问题,请参考以下文章