我有2个具有一对多关系的实体:Article
& ArticleCategory
class Article {
/**
* @var integer
*
* @ORM\Column(name="rate", type="integer",options={"default" : 0})
*/
private $rate = 0;
/**
* @var \ArticleCategory
*
* @ORM\ManyToOne(targetEntity="ArticleCategory",inversedBy="articles")
* @ORM\JoinColumn(name="article_category_id", referencedColumnName="id")
*/
private $category;
}
class ArticleCategory {
/**
*
* @var \Article
* @ORM\OneToMany(targetEntity="Article", mappedBy="category")
*/
protected $articles;
}
现在我想要获取具有最高费率的文章的类别。
“我的意思是按评分最高的文章排序的前N个类别(类别,其中包含的文章数量高于平均费率)
我该怎么做?
答案 0 :(得分:0)
最后我发现了这个问题,也许这对其他人有用! :)
$query = $em->createQuery('SELECT c, avg(a.rate) x
FROM YoutabsGeneralModelBundle:ArticleCategory c
JOIN c.articles a
GROUP BY c.id
ORDER BY x DESC');
我添加ORDER BY
,因为我想对此设置限制:
$query->setMaxResults($limit);