在laravel查询上实现日期过滤器

时间:2018-01-16 14:49:10

标签: php laravel laravel-5

我正在订单表上实施日期过滤器,例如返回今天,上周,上个月,特定日期或两个日期之间'created_at'的所有订单。

我知道laravel专门用于“whereDay”,“whereMonth”等方法。

到目前为止,我已为每个条件写了一个很大的开关语句,如:

switch($date_filter){
   case 'today':
     $orders = Order::whereDay('created_at','=',date('d')->get();
   break;
   // case for each date filter type 
}

我的问题是是否单独生成查询的日期过滤器部分,所以我可以这样做:

$orders = Order::whereRaw($this->getDateFilterAsSql($date_filter)->get();

这样我就不必为每个date_filter类型重复整个查询了吗?

1 个答案:

答案 0 :(得分:0)

您可以创建多个doc并使用它们:

$this->order->$date_filter()->get();

本地范围的一个例子:

public function scopeToday($query)
{
    return $query->whereDay('created_at', date('d'));
}

您还可以将模型用作存储库并执行此操作:

$this->order->$date_filter();

Order模型中的方法示例:

public function today()
{
    return $this->whereDay('created_at', date('d'))->get();
}