Laravel использует Sum и Groupby

Я хотел бы получить сумму количества в каждом месяце, чтобы я мог отображать количество на гистограмме по сравнению с месяцем

Я так и думал, но не тренировался

 $data1 = Borrow::groupBy(function($d) {
 return Carbon::parse($d->created_at)->format('m')->sum('quantity');
 })->get();

Моя структура таблицы

Schema::create('borrows', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('member_id');
        $table->integer('book_id');
        $table->integer('quantity');
        $table->integer('status')->default(0);
        $table->timestamps();
    });

person Theodory Faustine    schedule 27.08.2018    source источник
comment
ваше поле quantity является типом строки, и вы хотите суммировать, оно должно быть целочисленным типом?   -  person Saurabh Mistry    schedule 27.08.2018
comment
да, это целочисленный тип, я скопировал неправильную структуру сказки   -  person Theodory Faustine    schedule 27.08.2018


Ответы (2)


что группа сбора не красноречивая группа

если вы хотите сделать это красноречиво, вам нужно:

 $data1 = Borrow::selectRaw('SUM(quantity) as qt, MONTH(created_at) as borrowMonth')
      ->groupBy('borrowMonth')->get();

если вы хотите сделать это с помощью метода коллекции groupBy, вы должны сначала выполнить get, а затем groupBy.

Например, хотя я не уверен, чего вы пытаетесь достичь с помощью обратного вызова.

 $data1 = Borrow::get()->groupBy(function($d) {
 return Carbon::parse($d->created_at)->format('m')->sum('quantity');
 });
person Erubiel    schedule 27.08.2018
comment
Можете ли вы помочь в том, как написать мой запрос - person Theodory Faustine; 27.08.2018
comment
попробуйте этот, я думаю, он должен работать для того, что вам нужно - person Erubiel; 27.08.2018

попробуйте этот запрос, вы получите месячный счет:

use DB;


 $month_wise_count=DB::table("borrows")
        ->select(DB::raw('CONCAT(MONTHNAME(created_at), "-",  YEAR(created_at)) AS month_year'),
                DB::raw("MONTH(created_at) as month , YEAR(created_at) as year"),
                DB::raw("(COUNT(*)) as total_records"),
                DB::row("(SUM('quantity') as total_value"))
        ->orderBy(DB::raw("MONTH(created_at),YEAR(created_at)"))
        ->groupBy(DB::raw("MONTH(created_at),YEAR(created_at)"))
        ->get();
person Saurabh Mistry    schedule 27.08.2018