whereNotNull('created_at') ->where('created_at', '<>', '0000-00-00 00:00:00') ->selectRaw("DATE_FORMAT(created_at, '%Y-%m-01') as sort_date, DATE_FORMAT(created_at, '%M %Y') as mth, COUNT(id) as num") ->groupBy(['sort_date', 'mth']) ->orderByDesc('sort_date') ->get(); foreach ($users as $user) { self::updateOrCreate( ['month' => $user->mth], ['signups' => $user->num, 'sort_date' => $user->sort_date] ); } } public static function getUsersByMonth(): array { return self::query() ->select(['month', 'signups']) ->orderByDesc('sort_date') ->get() ->toArray(); } }