Подсчет записей по полю в модели laravel - PullRequest
0 голосов
/ 11 февраля 2020

Я ищу лучший способ получить и массив, который считает существующие строки некоторой красноречивой модели определенным полем. Гость Модель установки с полем типа. Прямо сейчас я использую этот подход, чтобы сделать это

$typeCount = Installation::select('type', DB::raw('COUNT(*) as count'))
  ->groupBy('type')
  ->get()
  ->mapWithKeys(function($item) {
        return [$item['type'] => $item['count']];
  })->toArray();

и $ typeCount вернет массив, подобный этому

[
     "contrib" => 2,
     "official" => 1,
]

Есть ли лучший или элегантный способ ????

1 Ответ

2 голосов
/ 11 февраля 2020

По методу pluck :

Сбор коллекции (строка $ column, string | null $ key = null)

Laravel будет использовать значение столбца второй параметр в качестве ключа , значение столбца первый параметр в качестве значения :

$typeCount = Installation::select('type', DB::raw('COUNT(*) as count'))
  ->groupBy('type')
  ->pluck('count', 'type')
  ->toArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...