Doctrine orm Doctrine2查询返回一个不存在的对象
我有一个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 = '.$
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