0

我有 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 ​​个类别其中有更多文章的评分高于平均评分的类别)”

我怎样才能做到这一点?

4

1 回答 1

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);
于 2013-05-08T07:12:24.763 回答