【问题标题】:Propel ORM: Calculating Average of a column推进 ORM:计算列的平均值
【发布时间】:2010-12-06 20:46:43
【问题描述】:

我有一个产品对象,我有评级对象,它们代表对产品的评级。评分有一个名为“value”的属性,它是一个从 1 到 5 的整数。

对于给定的产品,我想获得所有评级值的平均值。我知道如何获得所有评分:

$product->getRatingsRelatedByFromProductId();

但是我怎样才能得到所有评分的平均值

【问题讨论】:

    标签: sql orm propel average


    【解决方案1】:

    对于最新版本(Propel 1.5),以下是文档中的示例:http://www.propelorm.org/wiki/Documentation/1.5/ModelCriteria#AddingColumns

    $authors = AuthorQuery::create()
      ->join('Author.Book')
      ->withColumn('COUNT(Book.Id)', 'NbBooks')
      ->groupBy('Author.Id')
      ->find();
    foreach ($authors as $author) {
            echo $author->getName() . ': ' . $author->getNbBooks() . " books\n";
    }
    

    我想您可以轻松地将 COUNT() 替换为 AVG()、MIN()、MAX() 或任何其他聚合函数,并在需要时删除 ->groupBy()

    【讨论】:

    • 谢谢。我觉得这有点奇怪,计数支持一个简单的方法 "$authors->getBooksRelatedByAuthorId()->count(); 但其他聚合函数不是......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    • 2013-01-14
    • 2015-02-06
    相关资源
    最近更新 更多