从雄辩的收藏中获取关系数

时间:2018-11-05 08:54:02

标签: mysql laravel eloquent

我有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 :(得分:2)

\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();

答案 1 :(得分:1)

雄辩的查询生成器中:

$collection = Theme::groupBy('theme_id')
->selectRaw('theme_id, count(*) as themes_count')
->get();