【发布时间】:2010-12-06 20:46:43
【问题描述】:
我有一个产品对象,我有评级对象,它们代表对产品的评级。评分有一个名为“value”的属性,它是一个从 1 到 5 的整数。
对于给定的产品,我想获得所有评级值的平均值。我知道如何获得所有评分:
$product->getRatingsRelatedByFromProductId();
但是我怎样才能得到所有评分的平均值
【问题讨论】:
我有一个产品对象,我有评级对象,它们代表对产品的评级。评分有一个名为“value”的属性,它是一个从 1 到 5 的整数。
对于给定的产品,我想获得所有评级值的平均值。我知道如何获得所有评分:
$product->getRatingsRelatedByFromProductId();
但是我怎样才能得到所有评分的平均值
【问题讨论】:
对于最新版本(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()。
【讨论】: