我想在Vue Js和Backend Laravel中按月显示全年过滤数据

时间:2019-02-27 05:41:04

标签: php laravel vue.js laravel-filters

我使用Laravel作为后端,使用Vue.js作为前端。

我正在创建一个API,以获取所有数据,而没有基于Month的任何过滤器。

那么,如何在Vue.js模板中显示其月份的数据?

例如,我有数据:

  • 3月:显示3月创建日期的行
  • 4月:显示4月创建日期的行

显示它们的最佳方法是什么?或者我必须在控制器中创建不同月份的不同方法。

请告知 谢谢

1 个答案:

答案 0 :(得分:1)

我也有同样的情况,我从Vue的日历中选择日期范围,然后将该日期发送到laravel,然后使用Carbon解析这些日期在laravel中,并使用这些日期范围查找雄辩的记录。

$query = Payment::query();

if($request->filled('startDate')){
      $query = $query->where('date','>=',Carbon::parse($request->startDate)->toDateTimeString());
}
if($request->filled('endDate')){
     $query = $query->where('date','<=',Carbon::parse($request->endDate)->toDateTimeString());
}
return response()->json(['payments' => $query->get()]; //return in format that you want

我们还可以使用Carbon返回起始日期和结束日期之间的日期范围

function findDateRange($request)
{
    $carbon = '\Carbon\Carbon';
    $dateRange = 'Invalid Date Range';
    if($request->filled('startDate') &&  $request->filled('endDate')){
        $differenceInDays = $carbon::parse($request->startDate)->diffInDays($carbon::parse($request->endDate));
        if($differenceInDays < 7){
            $dateRange = 'Week '. $carbon::parse($request->startDate)->weekOfYear .'<br>'. $carbon::parse($request->startDate)->format(authUser()->date_format) .' - '.$carbon::parse($request->endDate)->format(authUser()->date_format);
        }elseif($differenceInDays > 6 && $differenceInDays < 32){
            $dateRange = $carbon::parse($request->startDate)->format('F Y');
        }elseif($differenceInDays > 32 && $differenceInDays < 366){
            $dateRange = $carbon::parse($request->startDate)->format('Y');
        }
    }
    return $dateRange;
}

这将返回如图所示的日期范围 enter image description here enter image description here enter image description here