Отображение результата в графике на основе комбинации выбора года и месяца в laravel - PullRequest
0 голосов
/ 14 февраля 2020

Я отображаю график суммы кол-во по дате, это работает, но теперь я хочу отобразить график, в котором сумма количества месяца и года объединяет выбор. Моя дата хранится в формате 2020-02-14, и я хочу отобразить сумму кол-во 2020-02 от 2019-02 to 2020-09. Я перепробовал много работ. Я получаю график с датой, но теперь я хочу объединить год и месяц

Для выбора даты запрос как

$get_details=DB::select('SELECT sum(orders_qty) as sum_of_qty,deliver_date FROM `orders` WHERE deliver_date between ? AND ? GROUP BY deliver_date',[$data['start_date'],$data['end_date']]);

Для выбора года и месяца мне нужен запрос, я пробовал вот так

    $data=$req->all();

    $results = DB::table('orders')
                         ->select(DB::raw('DATE_FORMAT(deliver_date,"%y-%m") as deliver_date'),DB::raw('SUM(orders_qty) as sum_of_qty'))
                         ->whereBetween('deliver_date',[$data['start_year_month'],$data['end_year_month']])
                         ->groupBy('deliver_date')
                         ->get();
    $date[start_year_month]='2019-02' $date[end_year_month]='2019-05' and actual database date='2019-02-14'

PLZ нужно запрос

Ответы [ 2 ]

1 голос
/ 14 февраля 2020

Во-первых, используйте %Y-%m вместо %y-%m;

Во-вторых, вы переписываете имя поля, поэтому при группировании по имени, которое не было переписано, вам нужно указать DB::raw('DATE_FORMAT(deliver_date,"%Y-%m")

Так что запрос такой:

$data=$req->all();

$results = DB::table('orders')
                ->select(DB::raw('DATE_FORMAT(deliver_date,"%Y-%m") as delivery_date'),DB::raw('SUM(orders_qty) as sum_of_qty'))
                         ->whereBetween(DB::raw('DATE_FORMAT(deliver_date,"%Y-%m")'), [$data['start_year_month'],$data['end_year_month']])
                         ->groupBy(DB::raw('DATE_FORMAT(deliver_date,"%Y-%m")'))
                         ->get();
0 голосов
/ 14 февраля 2020

Вы можете попробовать это!

 $results = DB::table('orders')
       ->select(DB::raw('DATE_FORMAT(deliver_date,"%y-%m") as deliver_date'),DB::raw('SUM(orders_qty) as sum_of_qty'))
      ->whereBetween('deliver_date',[$data['start_year_month'],$data['end_year_month']])
     ->groupBy(function ($val) {
return Carbon::parse($val->start_time)->format('y');  });
...