我的模型中有这种情况:
产品属于一个类别。TransactionDetail 有产品、价格和数量。交易有 TransactionDetails 和 date。商店有交易。集团有商店。
它们是教义实体,它们是适当相关的。(我不粘贴课程,它会太长)。
事情是我需要查询模型以获得销售的总产品(SUM TransactionDetail.quantity)和总金额(SUM TransactionDetail.quantity * TransactionDetail.prize),按产品分组,来自某个类别的产品交易在某个日期范围内发生的特定组。
好的,我用普通的 SQL 做了这个,它会像
select TransactionDetail.product, SUM(TransactionDetail.quantity) as quantity, SUM(TransactionDetail.quantity*TransactionDetail.prize) as euros
from TransactionDetail
left join Transaction
on TransactionDetail.transaction = Transaction.id
left join Product
on TransactionDetail.product = Product.id
left join Group
on Transaction.shop = Group.shop
where Product.category = :paramCategoryId
and Group.id = :paramGroupId
group by TransactionDetail.product
问题是我不知道如何将其放入 DQL 查询中(因为不建议使用纯 SQL,我真的很想更好地了解 DQL 的功能)。
你们能帮帮我吗?
提前致谢。
==================================================== ============================
编辑:
最先进的查询:
SELECT d, p,
SUM(d.quantity) as quantity, SUM(d.quantity*d.prize) as euros
FROM TransactionDetail d
LEFT JOIN d.transaction t
LEFT JOIN d.product p
LEFT JOIN t.shop s
LEFT JOIN s.groups g
ON s.id MEMBER OF g.shops
WHERE p.category = :category
AND g.id = :group
AND t.date > :from
AND t.date < :to
GROUP BY p
问题:s.groups 是一个集合,g.shops 也是。我不知道这个查询必须如何完成。