Laravel查询当日销售额Top3用户时seller关联无返回问题求解
问题原因
- 原查询没有选择
seller关联对应的外键字段(通常为seller_id,可根据你模型的关联定义调整),Laravel ORM无法匹配到对应的关联模型数据,导致with('seller')加载失败 - 没有按卖家ID分组,
sum(total_wholesale)统计的是全部当日订单的总销售额,而非每个卖家各自的销售额
修正后代码
查询逻辑调整如下:
// 请将代码中的seller_id替换为你Order模型关联seller时定义的外键字段名 Order::select('seller_id', DB::raw('sum(total_wholesale) as sums')) ->whereDate('created_at', Carbon::today()) ->groupBy('seller_id') ->orderBy('sums', 'DESC') ->take(3) ->with('seller') ->get();
如果需要输出你要求的格式,遍历查询结果即可:
$top3Sellers = Order::select('seller_id', DB::raw('sum(total_wholesale) as sums')) ->whereDate('created_at', Carbon::today()) ->groupBy('seller_id') ->orderBy('sums', 'DESC') ->take(3) ->with('seller') ->get(); foreach ($top3Sellers as $orderStat) { // 这里的name替换为你seller模型里对应的用户名字段 echo "{$orderStat->seller->name} {$orderStat->sums}\n"; }
注意事项
- 如果MySQL开启了
ONLY_FULL_GROUP_BY严格模式,确保select中仅包含分组字段seller_id和聚合统计字段sums,seller的其他属性通过with关联加载即可,不需要在Order的查询中选择 - 如果你的关联外键不是
seller_id,请替换为你实际定义的外键字段名
内容的提问来源于stack exchange,提问作者m33ts4k0z
相关产品推荐
相关产品推荐

