我想使用laravel获取日期相关数据

jdzmm42g  于 2023-03-04  发布在  其他
关注(0)|答案(3)|浏览(150)

我想查询,如果我没有进入请求日期,否则数据应显示当前日期,请帮助我谢谢。

    • 主计长**
VehicleTask::where('vehicle_id', $this->driver)
            ->whereDate('date', Carbon::now()->format('Y-m-d'))
            ->orWhere('date',$request->date)
            ->get()
w80xi6nr

w80xi6nr1#

最小化版本

$date = $request->date ?? Carbon::now()->format('Y-m-d');
VehicleTask::where('vehicle_id', $this->driver)
            ->whereDate('date', $date)
            ->get();
zyfwsgd6

zyfwsgd62#

您可以使用

VehicleTask::where('vehicle_id', $this->driver)
    ->when($request->has('date'), function ($query) use ($request) {
        return $query->whereDate('date', $request->date);
    }, function ($query) {
        return $query->whereDate('date', today());
    })
    ->get();

或者

$date = now(); # or Date('Y-m-d H:i:s');
if ($request->has('date')) {
    $date = $request->date;
}
VehicleTask::where('vehicle_id', $this->driver)
    ->whereDate('date', Carbon::now()->format('Y-m-d'))
    ->orWhere('date', $date)
    ->get();
7tofc5zh

7tofc5zh3#

要实现所需的行为,可以使用Laravel的when()方法,根据$request->date是否存在,有条件地添加whereDate()子句。

VehicleTask::where('vehicle_id', $this->driver)
->when($request->has('date'), function ($query) use ($request) {
    return $query->whereDate('date', $request->date);
}, function ($query) {
    return $query->whereDate('date', Carbon::now()->format('Y-m-d'));
})
->get();
    • 说明:**when()方法有两个参数:
  • 第一个参数是确定是否应用回调函数的条件,在本例中,我们使用has()方法检查$request->date是否存在。
  • 第二个参数是一个回调函数,如果条件为真,则执行该函数,我们使用闭包来添加whereDate()子句和$request->date值。
  • 第三个参数是另一个回调函数,如果条件为false,则执行该函数,我们使用闭包来添加whereDate()子句,并使用Carbon::now()方法添加当前日期。

因此,上面的代码检查$request->date是否存在,如果存在,则添加whereDate()子句和$request->date值,否则添加whereDate()子句和当前日期。
希望这有帮助!

相关问题