Laravel 4 Query Builder - groupBy Max Date

Ari*_*lSh 3 php mysql query-builder greatest-n-per-group laravel-4

小查询问题,我有桌子:

id    | user_id | paper_update
------------------------------
1     |    1    | 30-5-2011
2     |    2    | 30-5-2012
3     |    3    | 30-5-2012   
4     |    1    | 30-5-2013  
5     |    2    | 30-5-2013  
6     |    3    | 30-5-2014  
7     |    4    | 30-5-2014  
8     |    5    | 30-5-2014
9     |    5    | 30-5-2015 
10    |    5    | 30-5-2016
11    |    1    | 30-5-2010
-------------------------------
Run Code Online (Sandbox Code Playgroud)

我要做的是只选择记录paper_update之间的最大记录user_id,实际上我想要按user_id最大值分组paper_update.所以对于这个表,它将返回:

id    | user_id | paper_update
------------------------------
4     |    1    | 30-5-2013  
5     |    2    | 30-5-2013  
6     |    3    | 30-5-2014  
7     |    4    | 30-5-2014  
10    |    5    | 30-5-2016 
-------------------------------
Run Code Online (Sandbox Code Playgroud)

Fas*_* kk 7

这是在laravel中获得groupBy Max Date的最简单,最短的方法.使用group by获取带有最大日期的行user_id.

       $rows = DB::table('papers')
               ->select(DB::raw('id, max(paper_update) as year,user_id'))
               ->groupBy('user_id')
               //->orderBy('paper_update', 'desc')
               ->get();
Run Code Online (Sandbox Code Playgroud)

这个laravel查询将创建一个这样的mysql查询

select id, max(paper_update) as year from `papers` group by `user_id`;
Run Code Online (Sandbox Code Playgroud)

输出将是

Array
(
    [0] => stdClass Object
        (
            [id] => 4
            [year] => 30-5-2013 
            [user_id] => 1
        )

    [1] => stdClass Object
        (
            [id] => 5
            [year] => 30-5-2013
            [user_id] => 2
        )

    [2] => stdClass Object
        (
            [id] => 6
            [year] => 30-5-2014
            [user_id] => 3
        )

    [3] => stdClass Object
        (
            [id] => 7
            [year] => 30-5-2014
            [user_id] => 4
        )
    [4] => stdClass Object
        (
            [id] => 10
            [year] => 30-5-2016
            [user_id] => 5
        )
)
Run Code Online (Sandbox Code Playgroud)