私のモデルには次のような状況があります。
製品はカテゴリに属します。TransactionDetail には、製品、価格、および数量があります。Transaction には TransactionDetails と date があります。ショップにはトランザクションがあります。グループにはショップがあります。
それらは Doctrine エンティティであり、適切に関連付けられています。(クラスは貼り付けません。長すぎるでしょう)。
モデルをクエリして、特定のカテゴリの製品のトランザクションから、製品ごとにグループ化された総販売額 (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 もコレクションです。世界でこのクエリをどのように実行する必要があるかわかりません。