【发布时间】:2018-09-08 17:33:56
【问题描述】:
我构建了一个应用程序来跟踪销售情况。在我的客户视图中,我想要一个包含每位客户总销售额的列,但随着客户群的增长,列表加载速度越来越慢。这就是我所做的(简化):
控制器:
$customers = App\Customer::get();
查看:
@foreach ($customers as $customer)
{{ $customer->name }} {{ $customer->totalSales() }}
@endforeach
型号:
public function totalSales()
{
$invoiceLines = InvoiceLine::whereHas('invoice', function ($query) {
$query->where('customer_id', $this->id);
})->get();
$sales = $invoiceLines->reduce(function ($carry, $invoiceLine) {
return $carry + ($invoiceLine->quantity * $invoiceLine->pricePerUnit);
});
return $sales ?: 0;
}
让这个视图/报告更“可扩展”的最佳方法是什么?
我一直在考虑创建一个命令来计算每个客户一夜之间的总销售额并将结果放入客户表中,但这意味着白天的数字不会准确......
【问题讨论】: