我试图查看连续几周有记录并遇到有趣的行为
这有效
$weeks = $className::where($user_id_column, $user_id)
->where('created_at', '>', $period_start)
->select(DB::raw('WEEK(created_at) AS weeknumber'))
->groupBy('weeknumber')
->get();
这会引发错误
$week_count = $className::where($user_id_column, $user_id)
->where('created_at', '>', $period_start)
->select(DB::raw('WEEK(created_at) AS weeknumber'))
->groupBy('weeknumber')
->count();
Unknown column 'weeknumber' in 'group statement'
那是为什么?
答案 0 :(得分:2)
出现此问题的原因是因为count()
将用count(*) as aggregate
替换select语句。
要达到目标,可以手动添加计数:
$week_count = $className::where($user_id_column, $user_id)
->where('created_at', '>', $period_start)
->selectRaw('WEEK(created_at) AS weeknumber, COUNT(*)')
->groupBy('weeknumber')
->get();