Laravel Sub Query Group of Group By

时间:2017-10-30 09:37:12

标签: php laravel join eloquent

我需要帮助才能获得在laravel中按照claim_company_id分组的表的max claim_id。

这是表格样本

claim_id         claim_company_id       Date
1                     1                  1/1/2010
2                     1                  1/2/2010
3                     7                  1/3/2010
4                     7                  1/4/2010
5                     7                  1/5/2010

SELECT * FROM `claims` 
WHERE 
claims.claim_id in (SELECT max(claim_id) from claims GROUP by claim_company_id)

输出应为

2 - 1 - 1/2/2010
5 - 7 - 1/5/2010

但是当我运行此查询时

$query = DB::table('claims')    
                    ->groupBy('claim_company_id')
                    ->get( ['claims.*','claim_company_id',DB::raw('MAX(claim_id) as claim_id_new')]);

结果是

1 - 1 - 1/1/2010
3 - 7 - 1/3/2010

我现在卡住了一天。任何想法?

1 个答案:

答案 0 :(得分:3)

所以我需要使用whereRaw来运行代码,但事实证明它是这样的。 回答以后的参考

$query = DB::table('claims') 
             ->whereRaw('claim_id in (select max(claim_id) from claims group by (claim_company_id))')
             ->get();