column('id', '商品ID'); $grid->column('goods_name', '商品名称'); $grid->column('total_goods_num', '销售数量')->display(function(){ return $this->total_goods_num??0; }); $grid->disableCreateButton(); $grid->disableActions(); $grid->disableBatchDelete(); $grid->disablePagination(); $grid->model()->setData($this->goodsTotalData($request)); $grid->filter(function (Grid\Filter $filter) { $filter->between('created_at', '统计时间')->date(); }); }); return $content->header('统计') ->description('商品统计') ->body($grid); } public function goodsTotalData(Request $request){ $time = $request->input('created_at'); // $order_task = DB::table('orders')->where('order_status', 1)->where('pay_status', 1); $order_task = DB::table('order_goods') ->select('order_goods.goods_id', DB::raw('SUM(order_goods.goods_num) AS total_goods_num')) ->leftJoin('orders', 'orders.id', '=', 'order_goods.order_id') ->where('orders.order_status', 1) ->where('orders.pay_status', 1); if($time){ if($time['start']){ $order_task->where('orders.created_at', '>=', $time['start'].' 00:00:00'); } if($time['end']){ $order_task->where('orders.created_at', '<=', $time['end'].' 23:59:59'); } } $order_task->groupBy('order_goods.goods_id'); $data = Good::select('goods.id', 'goods_name', 'order_task.total_goods_num') ->leftJoinSub($order_task, 'order_task', function ($join) { $join->on('order_task.goods_id', '=', 'goods.id'); })->orderBy('order_task.total_goods_num', 'desc')->get()->toArray(); // dd($data); return $data; } }