Как получить "select count(*) group by" с помощью laravel eloquent

Я хотел бы выполнить следующее предложение, используя laravel eloquent

SELECT *, count(*) FROM reserves  group by day

единственное решение, которое приходит мне в голову, - это создать представление в БД, но я уверен, что есть способ сделать это в laravel.

3 ответов


вы можете использовать этот:

$reserves = DB::table('reserves')->selectRaw('*, count(*)')->groupBy('day');

Как вы хотите сделать это с Laravel красноречивым я предполагаю, что у вас есть имя модели Reserve. В этом случае вы можете использовать этот

$reserve = Reserve::all()->groupBy('day')->count();

вы можете использовать:

#Laravel Raw Expressions

  $reserves = DB::table('reserves')
                       ->select(DB::raw('count(*) as reserves_count'))           
                       ->groupBy('day')
                       ->get();

OR

  $reserves = Reserve::select(['reserves.*'])
                       ->groupBy('day')
                       ->count();

далее здесь