Получить количество отношений из красноречивой коллекции - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть Call модель. Каждый звонок имеет Theme. Как я это сделал:

class Call extends Model
{
    // some code here

    public function theme()
    {
        return $this->hasOne(Theme::class, 'id', 'theme_id')->withTrashed();
    }

    // some code there
}

Это прекрасно работает. Что я хочу сделать, так это подсчитать каждую тему, используемую во всех вызовах.

Например, есть 200 звонков. 100 из них имеют theme_id=3, 50 из них 6, а последние 50 имеют 8. Я хочу получить результат как:

{
  {theme_id:3, themes_count=100},
  {theme_id:6, themes_count=50},
  {theme_id:8, themes_count=50},
}

Как это сделать?

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

В построителе красноречивых запросов:

$collection = Theme::groupBy('theme_id')
->selectRaw('theme_id, count(*) as themes_count')
->get();
0 голосов
/ 05 ноября 2018
\DB::select("select theme_id, count(*) themes_count from calls group by theme_id");

Или используя QueryBuilder:

Call::selectRaw("count(*) themes_count,  theme_id")
    ->groupBy("theme_id")
    ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...