日期之间的laravel碳不能正常工作

问题描述 投票:0回答:1

我想要的是能够从一个星期的编号中获取记录。但是,当我使用第一个查询时,什么也不会返回。第二个查询返回同一周的记录,但查询中包含碳,然后它可以工作。

$date = Carbon::now();
$date->setISODate(2020,20);
return Timesheet::where('user_id', Auth::user()->id)->whereBetween('date', array($date->startOfWeek(), $date->endOfWeek()))->get();

输出:

[]

return Timesheet::where('user_id', Auth::user()->id)->whereBetween('date', [Carbon::now()->startOfWeek(), Carbon::now()->endOfWeek()])->get();

输出:

[{"id":3,"user_id":1,"project_id":1,"start_time":"2020-05-17 10:58:25","end_time":"2020-05-17 13:58:25","date":"2020-05-16","description":"text","created_at":"2020-05-17T14:58:25.000000Z","updated_at":"2020-05-17T14:58:25.000000Z"}]

我在做什么错?

laravel eloquent php-carbon week-number
1个回答
1
投票

当然结果将是[]。

回到您的第一个之间:

Timesheet::where('user_id', Auth::user()->id)
->whereBetween('date', array($date->startOfWeek(), $date->endOfWeek()))->get();

请考虑一下:

$date->startOfWeek(); 

此行等效于:

$date=$date->startOfWeek();

因此:变量'$ date'在结尾处将保留一个值,女巫在本周结束时,并且whereBetween将在相同值之间!

为避免这种情况,您可以使用:

Timesheet::where('user_id', Auth::user()->id)->whereBetween('date', array( 
Carbon::now()->startOfWeek(),
Carbon::now()->endOfWeek()))
->get();

或:

$weekStart=Carbon::now()->startOfWeek();
$weekEnd=Carbon::now()->endOfWeek();
Timesheet::where('user_id', Auth::user()->id)->whereBetween('date', array( 
    $weekStart,
    $weekEnd))
    ->get();

请注意,如果要在Carbon类型的变量中添加日期而不更改变量值,则可以使用Carbon :: make()方法:

$value=Carbon::now();
$afterThreeDaysFromValue=Carbon::make($value)->addDays(3);
© www.soinside.com 2019 - 2024. All rights reserved.