推进ORM:计算列的平均值

时间:2010-12-06 20:46:44

标签: sql orm propel average

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

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

$product->getRatingsRelatedByFromProductId();

但是如何获得所有评级的平均值

1 个答案:

答案 0 :(得分:3)

对于最新版本(Propel 1.5),以下是doc: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";
}

我猜您可以轻松地用AVG(),MIN(),MAX()或任何其他聚合函数替换CO​​UNT(),如果需要,可以删除->groupBy()