2013-05-05 3 views
0

у меня есть 2 сущность с один-ко-многим соотношение: Article & ArticleCategoryDoctrine2: отношение «один ко многим»;

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; 
} 

теперь я хочу, чтобы принести категории, которая имеет много статей с топ ставки ..

"я имею в виду Top N категории заказанные по наивысшей рейтинговой статье в них (категорий, которые имеют больше статей со скоростью выше средней скорости) «

как я могу это сделать?

+0

вы, очевидно, нужно поле скорости в вашей организации. Вы должны начать с этого, затем использовать DQL или критерии, чтобы определить, что такое «верхняя» ставка. – mpm

+0

У меня есть поле «rate» в моей сущности «Article»! Снова посмотрите на вопрос! :) – parisssss

+0

Ну, если вы пишете неполный код, не ожидайте, что люди угадают вас, для поля скорости нет комментариев, поэтому для меня это не поле для оргии orm, так как ваш вопрос стоит сейчас. – mpm

ответ

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); 
Смежные вопросы