我有一个模型叫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