2010-12-06 164 views
4

我有一個產品對象,而且我有評級對象,它表示對產品的評分。評級具有名爲「值」的屬性,其是從1到5的整數。推進ORM:計算列的平均值

對於給定的產品,我希望得到所有評級的值的平均值。我知道如何讓所有的評級:

$product->getRatingsRelatedByFromProductId(); 

但我怎麼能得到所有等級

回答

3

的值的平均值爲最新版本(推進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