gpt4 book ai didi

php - Mysql 查询或 Eloquent 根据商品计算总计以及订单和商品级别的折扣

转载 作者:行者123 更新时间:2023-11-29 21:11:22 25 4
gpt4 key购买 nike

我有订单和 Order_Items 表。应用线路折扣和订单折扣后,我需要计算含增值税和不含增值税的总额。如何计算最终价格(含税)?我正在使用 Laravel 并使用关系,一旦我有大约 20k 个订单和 70k 个 order_items,它就会变得非常慢。

订单

  • id(PK)
  • 用户 ID
  • 注册 ID
  • 促销时间
  • 有折扣
  • discount_is_percentage
  • 折扣金额

订单商品

  • id(PK)
  • order_id(FK)
  • 有折扣
  • discount_is_percentage
  • 折扣金额
  • 价格
  • 数量
  • 增值税税率

首先,我计算应用折扣的商品级别的不含税和含税价格。然后将它们相加即可得到销售总额。通过将订单折扣应用于总额来计算订单折扣。将折扣应用于商品以计算折扣后的商品价格。然后将商品金额相加即可得到订单总额。我在 Laravel 模型和集合中完成了所有这些工作,如果有几千个条目,那么一切都可以正常工作,但随着列表的增长,它需要越来越长的时间。

我应该将计算值直接存储在订单表中吗?或者我还能如何优化这个查询。我需要长达一年的报告,对于给定的客户,一年内的计数可能达到数百万。

我还将制作按不同列(user_id、register_id)以及按天和小时分组的报告。所以 Eloquent 收集目前可以工作,但速度非常慢。

我使用的是 Laravel 5.2

最佳答案

我建议您将访问器添加到您的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)排队计算/保存过程。因此,您可以计算 order 保存/更改的总计,并将结果放入 orders 表中。

关于php - Mysql 查询或 Eloquent 根据商品计算总计以及订单和商品级别的折扣,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36337963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com