使用多个列值获取最新记录

时间:2017-11-08 23:18:23

标签: mysql laravel eloquent

我有一个存储用户购买历史记录的表:

Purchasesiduserbrandmodelcolordate

我想获得一个用户最新购买的列表,按品牌和型号分组。

以下是一个示例数据集:

1, Bob,  Apple,   iPhone 6, Gold,   2017-01-03
2, Bob,  Apple,   iPhone 6, Silver, 2017-01-09
3, Bob,  Apple,   iPhone 6, Gold,   2017-01-18
4, Bob,  Samsung, Galaxy,   Black,  2017-01-22
5, Bob,  Samsung, Galaxy,   Black,  2017-01-28
6, Jane, Apple,   iPhone 6, Silver, 2017-01-18
7, Jane, Apple,   iPhone 6, Silver, 2017-01-22
8, Jane, Samsung, Galaxy,   White,  2017-01-28

我想检索显示如下的列表:

2, Bob,  Apple,   iPhone 6, Silver, 2017-01-09
3, Bob,  Apple,   iPhone 6, Gold,   2017-01-18
7, Jane, Apple,   iPhone 6, Silver, 2017-01-22
8, Jane, Samsung, Galaxy,   White,  2017-01-28

这样我就可以看到手机每个版本的最新购买日期。

我尝试了GROUP BY brand, model, color,但是在不支持群组之前它没有返回最新的行(?)。

如果我能搞清楚,请告诉我。提前谢谢。

2 个答案:

答案 0 :(得分:0)

试试这个

$date = array();
foreach ($purchase as $key => $row)
{
    $date[$key] = $row['date'];
}
array_multisort($date, SORT_ASC, $purchase);

答案 1 :(得分:-1)

您可以使用laravel查询构建器

$purchases = DB::table('Purchases')
            ->groupBy('brand', 'model', 'color')
            ->orderBy('date', 'desc')
            ->get();