【问题标题】:Doctrine2 :one-to-many relation;Doctrine2:一对多关系;
【发布时间】:2013-05-05 12:07:03
【问题描述】:

我有 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 ​​个类别分类率高于平均评分的文章较多的类别)"

我该怎么做?

【问题讨论】:

  • 显然您的实体中需要一个费率字段。您应该以此开始,然后使用 DQL 或标准来定义什么是“最高”率。
  • 我的rate 实体中有rate 字段!再次查看问题! :)
  • 好吧,如果您编写的代码不完整,不要指望人们为您猜测,因为 rate 字段没有注释,所以它对我来说不是一个教条 orm 字段,因为您现在的问题是。跨度>
  • 是什么意思“获取有很多文章的最高价格的类别”?你的意思是你想获得例如按所有评级的平均值排序的前 N ​​个类别?还是按评分最高的文章排序的前 N ​​个类别?还是所有文章评分最高的类别(例如,如果最高评分为 10,您将获得所有文章评分为 10 的类别)?请详细说明您的问题
  • @Cyprian,感谢您的评论。我试图再次澄清这一点,将其添加到我的问题中“我的意思是按其中评分最高的文章排序的前 N ​​个类别(具有更多文章的类别)高于平均水平)”

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


【解决方案1】:

最后我为我的问题找到了这个,也许它对其他人有用! :)

    $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);

【讨论】:

    猜你喜欢
    • 2011-09-24
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多