我有订单和Order_Items表。我需要在应用折扣和订单折扣后计算包含增值税和增值税的总额。如何计算最终价格inc和ex vat?我使用Laravel并使用关系,一旦我有大约20k订单和70k order_items,它就变得非常慢。
订单
ORDER_ITEMS
首先,我使用折扣计算物品等级的价格ex和inc vat。然后添加它们以获得销售总额。通过对总额应用订单折扣来计算订单折扣。将折扣应用于商品以计算折扣后的商品价格。然后添加项目金额以获得订单总额。我在Laravel模型和集合中都这样做,如果有几千个条目,一切正常,但随着列表的增长,它需要更长更长的时间。
我应该将计算值直接存储在订单表中吗?或者我如何优化此查询。我需要报告长达一年的时间,对于特定的客户,一年内的计数可以达到几百万。
此外,我将按不同的列(user_id,register_id)和日期和小时进行分组报告。所以Eloquent收藏现在有效,但实际上很慢。
我正在使用laravel 5.2
答案 0 :(得分:0)
我建议您将accessors
添加到Order
模型中。
这样的事情可以解决问题:
// comment it out if you don't need it in your model
protected $appends = ['total'];
public function getTotalAttribute()
{
$items = $this->items();
// do the needed calculations
return $result;
}
<强> 修改 强>
由于主要问题是性能问题,您可以使用mutator
和queue
calculate / save process
。因此,您将计算order
保存/更改的总计,并将结果放入orders
表。