雄辩的分组和计数

时间:2018-08-22 13:20:33

标签: mysql laravel group-by count eloquent

我的查询涉及1个表:“ entries”。正常运行的SQL查询是:

select `type`, YEAR(`date`) AS import_year, count(*) as aantal from
`entries`  where `merk` = 'FORD' and `date` <> `other_date`
GROUP BY `type`, YEAR(`date`)

此查询给出以下结果:

  
      
  • FOCUS 1998 13
  •   
  • FOCUS 2001 15
  •   
  • ORION 2007 12
  •   
  • ORION 2009 7
  •   

但是现在的问题是如何在Laravel / Eloquent中安排它,最好是发表一个声明。 到目前为止:

    $registrations = entry::where('merk', 'FORD')
            ->whereRaw('date <> other_date')
            ->selectRaw('type, YEAR(date) AS import_year')
            ->get()
            ->groupBy('type_final', 'import_year')

但是,这向我提供了所有符合要求的单独条目,我只希望拥有已盘点的物品。我尝试了很多,但是无法以简单的方式获得最终的解决方案。可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

您可以检索聚合(在您的情况下为count)。请参阅文档中的此部分:https://laravel.com/docs/5.6/eloquent#retrieving-single-models

答案 1 :(得分:0)

get()之后致电groupBy()

$registrations = entry::where('merk', 'FORD')
        ->whereRaw('date <> other_date')
        ->selectRaw('type, YEAR(date) AS import_year, count(*) AS aantal')
        ->groupBy('type', 'import_year')
        ->get()