推进ORM:计算列的平均值

问题描述:

我有一个产品对象,而且我有评级对象,它表示对产品的评分。评级具有名为“值”的属性,其是从1到5的整数。推进ORM:计算列的平均值

对于给定的产品,我希望得到所有评级的值的平均值。我知道如何让所有的评级:

$product->getRatingsRelatedByFromProductId(); 

但我怎么能得到所有等级

的值的平均值为最新版本(推进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()如果你需要。

+0

谢谢。虽然我觉得这是一种很受欢迎的方式,Count是用一个简单的方法“$ authors-> getBooksRelatedByAuthorId() - > count()”来支持的;但是其他的聚合函数并不是...... – 2010-12-08 13:27:50