学说2:一对多的关系;

时间:2013-05-05 12:07:03

标签: php doctrine-orm symfony-2.1 doctrine-query

我有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个类别类别,其中包含的文章数量高于平均费率

我该怎么做?

1 个答案:

答案 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);