Laravel whereDate() not working



我使用下面的查询在我的控制器中得到了一些编码的结果

$events = Event::whereHas('topic', function ($q) {
$q->where('delete_status', 0);
})
->where('status', 1)
->where('delete_status', 0);

在我的视图文件中,我已经三次使用这个变量来检查下面的中的Date

$events->where('type', '!=', 2)->whereDate('start_date', '>=', CarbonCarbon::now())->get()

$events->where('type', 2)->whereDate('start_date', '>=', CarbonCarbon::now())->get()

$events->whereDate('start_date', '<', CarbonCarbon::now())->get()

因为我想根据过去的日期或现在的日期得到结果。如果我使用get-in-controller查询,我会得到的错误,其中Date((不存在所以我在视图文件中使用了get((方法。

我无法从第二个和第三个查询中获得记录,但我只能从视图文件中的第一个查询中获取记录。

有什么解决方案吗?

$events是一个没有whereDate方法的集合,您可能需要的是filter()来在视图中过滤您的集合。因此你可以这样做

$filtered_events = 
$events->where('type', 2)
->filter(function ($item) {
return Carbon::parse($item->start_date)->gte(Carbon::today());
});

参考

最新更新