Doctrine orm Doctrine2查询返回一个不存在的对象

Doctrine orm Doctrine2查询返回一个不存在的对象,doctrine-orm,Doctrine Orm,我有一个Doctrine2项目,有三个表:产品、类别和评级。每个产品都有一个且只有一个类别。一个类别可能有一个父类别和多个子类别。 每种产品都有许多评级 我运行以下查询: 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 = '.$

我有一个Doctrine2项目,有三个表:产品类别评级。每个产品都有一个且只有一个类别。一个类别可能有一个父类别和多个子类别。 每种产品都有许多评级

我运行以下查询:

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。 问题是,尽管该类别中没有产品,但报告了一个结果。特别是,对象的类型为Acme\ProductBundle\Product,字段中没有值,id为0!“globalrating”值也是空的!我不明白为什么

有什么想法吗


提前谢谢。

您能试试这个吗:

$query = $this->em->createQuery('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 = :category OR cat = :category
                                 ORDER BY globalrating DESC, p.name ASC');

$query->setParameter('category', $categoryID);
$returned = $query->getResult();

我今天回到问题上来,终于发现了问题

在阅读相关文章时,我发现一个
groupby
子句丢失了。因此,正确的DQL查询是:

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.'
GROUP BY p.id
ORDER BY globalrating DESC, p.name ASC