Laravel一次查询中具有不同条件的雄辩多语计数

时间:2018-09-03 05:40:57

标签: mysql laravel eloquent

我有如下代码:

$sendto_hikkou1 = Guest::where('mypage_id', $mypage)
                ->where('snd_to_hikkou_id', 1)->count();
$sendto_hikkou2 = Guest::where('mypage_id', $mypage)
                ->where('snd_to_hikkou_id', 2)->count();
$sendto_hikkou3 = Guest::where('mypage_id', $mypage)
                ->where('snd_to_hikkou_id', 3)->count();

如何在一个查询中编写此内容?

3 个答案:

答案 0 :(得分:2)

使用groupBy来获取一个查询中的所有计数,如下所示

$sendto_hikkou = Guest::where('mypage_id', $mypage)
    ->whereIn('snd_to_hikkou_id',[1,2,3])
    ->groupBy('snd_to_hikkou_id')
    ->select('snd_to_hikkou_id',DB::raw("count(*) as hikkou_count"))
    ->get();

答案 1 :(得分:0)

您将不得不使用DB Facade而不是模型。 选择id字段,然后count,按id分组,然后获取。 我目前无法测试!

答案 2 :(得分:0)

这是我找到的解决方案,但是@ C2486的答案要好得多。

modelBuilder.Entity<Category>().HasData(
  new Category[]
    {
      new Category() { Id = 1, Name = "Category A" },
      new Category() { Id = 2, Name = "Category B has a new name" },
      // Category C has been merged with Category B
    });