gpt4 book ai didi

php - 教义2 : SUM in left join

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

我需要使用 Doctrine 进行查询,但我不知道该怎么做。

我需要的是支付金额

我有两个表:

订单订单商品

我想将订单商品的所有价格相加,然后从订单中减去已付款、优惠券和 user_credit。

Order
| ID | Paid | Coupon | UserCredit |
|----|-----------|------------|------------|
| 1 | 25.00 | 50.00 | 15.00 |
| 2 | 50.00 | 0.00 | 10.00 |

OrderItems
| ID | OrderID | Qty | SinglePrice | Price |
|----|---------|-----|-------------|---------|
| 1 | 1 | 2 | 50.00 | 100.00 |
| 2 | 1 | 1 | 100.00 | 100.00 |
| 3 | 2 | 1 | 150.00 | 150.00 |

我需要总和:200.00

1:200 - 25 - 50 - 15 = 110

2:150 - 50 - 0 - 10 = 90

$query = $this->entityQueryBuilder()
->select('(SUM(oi.price) - o.paid - o.coupon - o.user_credit) AS total')
->from(Order::class, 'o')
->leftJoin('o.items', 'oi')
->where('o.config = :config')
->andWhere('o.status < :status')
->setParameter('config', $this->getConfig())
->setParameter('status', 2)
->groupBy('o.id')
->getQuery();

return $query->getResult();

如果有人可以帮助我,我将不胜感激。

谢谢。

更新:通过上述查询,我​​得到了很多行,但我只需要一行即可获得总体结果。

更新2:我现在已经解决了,如下。但我想知道它是否有效:

$query = $this->entityQueryBuilder()
->select('(SUM(oi.price) - o.paid - o.coupon - o.user_credit) AS total')
->from(Order::class, 'o')
->leftJoin('o.items', 'oi')
->where('o.config = :config')
->andWhere('o.status < :status')
->setParameter('config', $this->getConfig())
->setParameter('status', 2)
->groupBy('o.id')
->getQuery();

$result = $query->getResult();

$sum = array_sum(array_column($result, 'total'));

return $sum;

最佳答案

您需要:

  • 对订单使用子查询
  • 仅对订单商品的价格进行求和

尝试:

$query = $this->entityQueryBuilder()
->select('(SELECT SUM(o.paid - o.coupon - o.user_credit) FROM' . Order::class . ' o) AS paidTotal')
->addSelect('SUM(oi.price) AS amount_to_pay')
->from(Order::class, 'o')
->leftJoin('o.items', 'oi')
->where('o.config = :config')
->andWhere('o.status < :status')
->setParameter('config', $this->getConfig())
->setParameter('status', 2)
->getQuery();

$totals = $query->getSingleResult();
$total = $totals['amount_to_pay'] - $totals['paidTotal'];

关于php - 教义2 : SUM in left join,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59311569/

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