Laravel whereDate()无效

时间:2017-08-30 06:03:35

标签: laravel

我使用下面的查询来获取我的控制器中的一些编码的结果

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

在我的视图文件中,我使用此变量三次检查日期,如下所示

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

并且

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

并且

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

因为我想根据过去的日期或现在的日期得到结果。如果我在控制器查询中使用get,则会出现 whereDate()不存在的错误 所以我在视图文件中使用了get()方法。

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

任何解决方案?

1 个答案:

答案 0 :(得分:2)

$events 是一个没有whereDate方法的集合,您可能正在寻找的是filter()来过滤您的收藏集你的意见。因此你可以这样做

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

Reference