public static function getLastNDaysActivity($n, $activityType, $quiz = null) { $activityHistory = QuizUserActivity::select(DB::raw('DATE(created_at) as date'), DB::raw('count(*) as activityCount'))->where('type', '=', $activityType)->where('created_at', '>', DB::raw('DATE_SUB(NOW(), INTERVAL ' . $n . ' DAY)')); if ($quiz) { $activityHistory = $activityHistory->where('quiz_id', '=', $quiz->id); } $activityHistory = $activityHistory->groupBy('date')->get()->toArray(); $lastNDays = self::lastNDays($n); $lastNDaysActivity = array(); foreach ($lastNDays as $key => $day) { $lastNDaysActivity[$key] = array('date' => $day, $activityType => 0); foreach ($activityHistory as $activity) { if ($activity['date'] === $day) { $lastNDaysActivity[$key][$activityType] = $activity['activityCount']; } } } return $lastNDaysActivity; }