【发布时间】:2021-09-25 04:21:43
【问题描述】:
我对 Laravel 的 ORM Eloquent cursor() 方法有疑问。我正在尝试为我的电子商务创建一些分析功能来获取订单/收入的数量和类似的东西,你可以在下面查看我的代码:
$fromDate = Carbon::now()->startOfYear()->toDateString();
$tillDate = Carbon::now()->endOfYear()->toDateString();
$orders = Order::cursor()->whereBetween('created_at', [$fromDate, $tillDate])->whereIn('status', array(1, 2, 3))->filter(function ($order) {
return $order;
});
$countO = $orders->count();
$sumO = $orders->sum('total');
$orders = VoucherOrder::cursor()->whereBetween('created_at', [$fromDate, $tillDate])->where('status', 1)->filter(function ($order) {
return $order;
});
$countV = $orders->count();
$sumV = $orders->sum('total');
$orders = $countO + $countV;
$income = $sumO + $sumV;
if($orders != 0) {
$avgOrder = $income / $orders;
}
else {
$avgOrder = 0;
}
return view('admin.income', compact('orders', 'income', 'avgOrder'));
我使用 cursor() 来减少内存使用量,因为我正在处理大量数据,但我仍然收到此错误:
允许的内存大小为 536870912 字节已用尽(试图分配 2338688 字节)
我做错了什么?我该如何解决?
【问题讨论】:
标签: php laravel eloquent laravel-7