我有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},
}
该怎么做?
答案 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();