Laravel 使用 Sum 和 Groupby

The*_*ine 2 php laravel eloquent laravel-collection laravel-5.6

我想获取每个月的数量总和,以便我可以在条形图上按月显示数量

这是我想的但没有锻炼

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

我的表结构

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();
    });
Run Code Online (Sandbox Code Playgroud)

Eru*_*iel 5

一个集合 group by 不是一个雄辩的 groupby

如果你想用 eloquent 做到这一点,必须:

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

如果你想用集合 groupBy 方法来做,你应该先做 get,然后是 groupBy。

就像在,虽然我不确定你想用你在回调中做什么来完成什么..

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