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 に答える