如何在Laravel查询中使用sum和groupBy

时间:2018-08-19 06:10:17

标签: laravel eloquent laravel-5.6

我想对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

如何编写此查询?

2 个答案:

答案 0 :(得分:0)

您应该尝试这样的事情:

  • 首先创建一个Purchase模型。

并使用该模型查询您的数据库。

Purchase::select([
        'brand_name',
        'unit_name',
        'sum(now_stock) as stock',
    ])
    ->where('category_id', 2)
    ->groupBy('unit_name')
    ->get();

答案 1 :(得分:0)

使用

$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::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