Laravel使用Sum和Groupby

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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();
    });
答案

一个集合组不是一个雄辩的团队

如果你想用雄辩的话做,那就得:

 $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');
 });
另一答案

尝试此查询,您将得到月份计数:

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();

以上是关于Laravel使用Sum和Groupby的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Eloquent:与 groupBy 求和

如何在 Laravel 关系中实现 SUM()?

Linq:GroupBy、Sum 和 Count

Spark数据框:如何在groupBy + sum之后使用

PySpark 1.5 Groupby Sum 用于 Dataframe 中的新列

使用 groupBy 和资源收集 laravel