【问题标题】:Laravel whereDate() not workingLaravel whereDate()不起作用
【发布时间】:2018-02-07 17:33:09
【问题描述】:

我已使用以下查询在我的控制器中获取带有一些代码的结果

$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() 方法。

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

有什么办法吗?

【问题讨论】:

  • 你为什么使用-&gt;whereDate('start_date', '&gt;=', \Carbon\Carbon::now())-&gt;get()。你可以使用-&gt;whereDate('start_date', '&gt;=', \Carbon\Carbon::now());
  • 试过whereDate('start_date', '&gt;=', date('Y-m-d')) ?
  • @HirenGohel 正如我在我的问题中提到的,如果我这样使用,我会遇到 whereDate() 不存在的方法错误
  • 是的,但它不起作用@linktoahref

标签: laravel


【解决方案1】:

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

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

Reference

【讨论】:

  • 工作得很好.. 非常感谢你
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多