我想计算所有状态为“可见”和“幽灵”的用户:
public function getStatsUser() {
$data = self::whereIn('state', array('Visible', 'Ghost'))
->count();
return $data;
}
但我想每个月从第一个用户获得这些数据,如下所示:
['Month', 'Data'],
['December 2016', 4000],
['January 2017', 4600],
['February 2017', 11020],
['March 2017', 5400]
对于日期,我有一行“created_at”但不是该月的特定行。
我尝试了这个,但它无法正常工作
$data= self::select(DB::raw('count(*) as monthly_total'), DB::raw('MONTH(created_at) as month'))
->whereIn('state', array('visible', 'Ghost'))
->whereYear('created_at', '=', date('Y'))
->groupBy('month')
->count();
错误:
SQLSTATE[42S22]: Column not found: 1054 Champ 'month' inconnu dans group statement (SQL: select count(*) as aggregate from `oiseau` where `etat_actuel` in (Relaché, En convalescence) and year(`date_signalement`) = 2017 group by `month`)
感谢您的帮助!
答案 0 :(得分:1)
这应该让你开始:
self::selectRaw('CONCAT_WS(" ", MONTHNAME(created_at), YEAR(created_at)) as date, COUNT(*) as count')
->whereIn('state', array('visible', 'Ghost'))
->groupBy(DB::raw('YEAR(created_at)', MONTH(created_at)))
->get()
查询将返回带有日期和计数的对象集合。
可能最重要的部分是按年份和月份进行分组,您可以在那里使用函数而不是原始列。
PS:这将从self
课程中获取Laravel模型,他们实际上并不是......所以可以将self
替换为DB::table('users')
或者类似子>
答案 1 :(得分:0)
您可以尝试:
$data = self::whereIn('state', array('Visible', 'Ghost'))
->select(DB::raw('count(*) as monthly_total') , DB::raw('MONTH(created_at) month'))
->groupBy('month ')
->get();
如果Month存储在其他表中,请尝试加入查询。