我有一個模型叫Product
。 Product
除了別的以外還有價格,類別和創建日期。如何表示OOP中的平均值和其他聚合值?
我想顯示一個表格,顯示許多地方按類別劃分的平均價格和平均年齡。有時候我只想要一個類別,有時甚至是一切,有時候只有那些已經超過特定時間的產品。
目前我使用Laravel的查詢生成器在控制器中生成這些數字,然後傳遞那看一看。
爲了儘量重用,我有這樣的方法之前,我需要它:
$product_averages_base_query = DB::table('products')
->leftJoin('categories', 'products.MakeDescription', '=', 'categories.id')
->select(
DB::raw('count(products.id) as TotalNumber'),
DB::raw('AVG(Datediff("'.date('Y-m-d').'",products.created)) as AvgDaysInStock'),
DB::raw('AVG(Price) as AvgPrice')
);
然後,當具體使用情況下,我使用:
$averages = $product_averages_base_query->where('categories.name', '=', 'Example 1')->get();
或任何變種是。
這種感覺真的是「錯誤」,因爲我當然最終將這些代碼複製到各處。
如何以一種讓我更容易重用它的方式表示這些數據?我應該上課嗎?它應該叫什麼,它有什麼?
我應該有一個模型莫名其妙?
歡迎任何建議!
這是否有意義,因爲它不是產品的屬性,它是所有產品的屬性? – 2014-09-03 16:14:13