Laravel投放日期至今

时间:2018-11-30 06:38:00

标签: laravel-5 eloquent

大家好,

我正在雄辩地进行whereBetween日期查询,但是日期时间有问题。

如果我选择date_from to 2018-11-01date_to to 2018-11-29

,如果我有一个在2018-11-29 12:28:45上创建的数据,则由于时间原因,将不包括在该日期时间创建的数据。有没有一种方法可以将created_at强制转换为date

这是我的代码:

Payable::with('details', 'transaction_type')
                        ->whereBetween('created_at', [$request->date_from, $request->date_to])
                        ->get();

提前谢谢。

3 个答案:

答案 0 :(得分:1)

您可以将时间设置为日期变量。

$request->date_from = $request->date_from . ' 00:00:00';
$request->date_from = $request->date_from . ' 23:59:59';

答案 1 :(得分:0)

我觉得在Laravel中处理日期的一种更简洁的方法是使用Carbon包。

$date_from = Carbon::createFromFormat('Y-m-d', $request->date_from)->startOfDay();
$date_to = Carbon::createFromFormat('Y-m-d', $request->date_to)->endOfDay();

仅FYI,created_at列在通过雄辩者访问时,默认情况下会返回碳日期对象。

希望这会有所帮助。

K

答案 2 :(得分:0)

如果您不介意在查询中添加额外的->,则可以很容易地做到这一点:

Payable::with('details', 'transaction_type')
         ->whereDate('created_at', '>=', $request->date_from)
         ->whereDate('created_at', '<=', $request->date_to)
         ->get();