我想要的是能够从一个星期的编号中获取记录。但是,当我使用第一个查询时,什么也不会返回。第二个查询返回同一周的记录,但查询中包含碳,然后它可以工作。
$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"}]
我在做什么错?
当然结果将是[]。
回到您的第一个之间:
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);