Laravel 5.3模型 - 计算一列 - 哪种方法更快

lou*_*sav 1 php model laravel eloquent

我有一个Level列,需要计算每个列的数量.

哪些选项更快/更有效?为什么?或者也许是一个我没考虑过的更快的方法?

$athletes = Athlete::orderBy('level', 'desc')->get();

   foreach ($athletes as $a) {
        switch ($a->level) {
            case "advanced":
                $dataAdvanced += 1; 
                break;
            case "intermediate":
                $dataIntermediate += 1;
                break;
            case "medium":
                $dataMedium += 1;
                break;
            case "beginner":
                $dataBeginner += 1;
                break;
            case "other":
                $dataOther += 1;
                break;
        }
Run Code Online (Sandbox Code Playgroud)

要么

    $dataAdvanced = Athlete::where('level', 'advanced')->count();
    $dataIntermediate = Athlete::where('level', 'intermediate')->count();
    $dataMedium = Athlete::where('level', 'medium')->count();
    $dataBeginner = Athlete::where('level', 'beginner')->count(); 
    $dataOther = Athlete::where('level', 'other')->count();
Run Code Online (Sandbox Code Playgroud)

Nit*_*ohn 5

If your table name is athletes, note: use DB in controller
$athletesInfo = DB::table('athletes')
                     ->select('level', DB::raw('count(*) as total'))
                     ->groupBy('level')
                     ->get();
Run Code Online (Sandbox Code Playgroud)