Laravel中通过关联查询获取商品对应库存总量
商品信息关联库存总量查询方案
要实现获取商品信息并计算对应库存quantity的总和,同时保留分页功能,可通过分组查询和聚合函数实现,具体代码如下:
基础实现(仅包含有库存的商品)
return DB::table('products') ->select('products.*', DB::raw('SUM(stocks.quantity) as total_quantity')) ->join('stocks', 'products.id', '=', 'stocks.product_id') ->groupBy('products.id') ->paginate(5);
关键逻辑说明
- 用
select()指定查询商品的所有字段,同时通过DB::raw()执行SUM(stocks.quantity)计算库存总和,并设置别名total_quantity groupBy('products.id')按商品ID分组,确保每个商品仅返回一条记录,避免因多条库存记录导致商品信息重复- 保留
paginate(5)维持分页功能,返回结果中每条商品记录都会携带total_quantity字段,即该商品的库存总量
进阶实现(包含无库存的商品)
如果需要展示没有库存记录的商品(此时总量显示为0),将join替换为leftJoin,并通过COALESCE()处理NULL值:
return DB::table('products') ->select('products.*', DB::raw('COALESCE(SUM(stocks.quantity), 0) as total_quantity')) ->leftJoin('stocks', 'products.id', '=', 'stocks.product_id') ->groupBy('products.id') ->paginate(5);
内容的提问来源于stack exchange,提问作者Mishen Thakshana
相关产品推荐
相关产品推荐

