Product、Category、Ratingの3 つのテーブルを持つDoctrine2プロジェクトがあります。各製品には 1 つだけのカテゴリがあります。カテゴリには、親と多くの子が含まれる場合があります。各製品には多くの評価があります。
次のクエリを実行します。
SELECT DISTINCT p, AVG(r.value)*COUNT(r) as globalrating
FROM AcmeProductBundle:Product p
JOIN p.ratings r JOIN p.category cat JOIN cat.parent par
WHERE par = '.$categoryID.' OR cat = '.$categoryID.'
ORDER BY globalrating DESC, p.name ASC
$categoryID は、製品を検索しているカテゴリの ID です。要点は、カテゴリに製品がないにもかかわらず、1 つの結果が報告されるということです。特に、オブジェクトのタイプは Acme\ProductBundle\Product で、フィールドに値がなく、id は 0です! また、「globalrating」値は空です! なぜだか分からない?
何か案が?
前もって感謝します。