这是我的表here
答案 0 :(得分:1)
我们需要首先获取DATE格式,而不是使用DATETIME,因为您需要每天的数据。试试这个查询
$data = DB::table('table_name')
->select(DB::raw('avg(apotelesma) as count, DATE(imeromina_metrisis) day'))
->groupBy('day')
->get();
参考如何选择原始表达式here
答案 1 :(得分:0)
可能是这样的。
$avg = Model::where('imeromina_metreisis', $carbon)->avg('apotelesma');
请参阅:
https://laravel.com/docs/5.1/queries#aggregates
请注意您的日期列。 $carbon
是一个变量,表示Laravel广泛使用的Carbon日期和时间对象。如果平均值是一整天,但您使用的是日期时间(包括小时/分钟/秒),您将需要执行此类操作。
$carbon = Carbon::now()->startOfDate();
$avg = Model::where('imeromina_metreisis', '>=', $carbon)
->where('imeromina_metreisis', '<=', $carbon->copy()->endOfDay())
->avg('apotelesma');
是的,那些都是内置的Carbon方法。它真的是一个很棒的图书馆。
编辑:有关Carbon的更多文档。我想你想要任意的日间范围 http://carbon.nesbot.com/docs/
答案 2 :(得分:0)
好吧,我发现使用Eloquent + Fluent解决方案可以使用我的关系。 这是我的代码,用于收集我的所有文章+用户+评分平均值:
$articles = Articles::where('state', '=', '1')
->with('user')
->leftJoin('ratings', 'ratings.article_id', '=', 'articles.id')
->select(array('articles.*',
DB::raw('AVG(rating) as ratings_average')
))
->groupBy('id')
->orderBy('ratings_average', 'DESC')
->get();