首页 > 解决方案 > 如何在 laravel 查询中使用 sum 和 groupBy

问题描述

我想在 Laravel 5.6 中对具有不同单位名称的采购表中的库存求和这是我的查询:

DB::select("select brand_name,unit_name, sum(now_stock) as stock from purchases where category_id = 2 group By(unit_name)");

当我在 mysql 中运行它时,它是好的,但是当我在 laravel 中使用它时,会显示一个错误。

我想放在 laravel 刀片文件中

 1. brand_name ...Unit_name ...Stock
 2. BSRM ...  ........    1.2     ....  .. ..........25  
 3. KSRM..............1.5...................50

我该如何编写这个查询?

标签: laraveleloquentlaravel-5.6

解决方案


利用,

$purchase = DB::table('purchases')
               ->where('category_id',2)
               ->select('brand_name','unit_name',DB::raw('sum(now_stock) as stock'))
               ->groupBy('unit_name')
               ->get();

如果您有一个名为Purchase用于购买表的模型,则使用,

$purchase = Purchase::where('category_id',2)
                    ->select('brand_name','unit_name',DB::raw('sum(now_stock) as stock'))
                    ->groupBy('unit_name')
                    ->get();

您必须将其传递给您的刀片视图以便在那里访问它。为了那个原因,

return view('bladeviewname', ['purchases' => $purchase]);

在您看来,您可以使用like,

@foreach($purchases as $purchase)
  {{ $purchase->brand_name }}
  {{ $purchase->unit_name }}
  {{ $purchase->stock }}
@endforeach

推荐阅读