Laravel 5.6。为每个唯一的列键获取第一个唯一的行(desc 和 example 更整洁)

Laravel 5.6. Get first unique row for each unique column key (desc and example are much neater)

我有这样一个table(简化版)用于记录订单历史:

order_id (NOT unique) | created_at | message

它包含这样的记录

1 | 2018-03-01 | Message #1
2 | 2018-03-02 | Message #2
2 | 2018-03-03 | Message #3
1 | 2018-03-04 | Message #4

我应该如何查询我的 OrderAttempt 模型以接收 每个模型的唯一记录 order_id

2 | 2018-03-01 | Message #3
1 | 2018-03-01 | Message #4

如果需要,我准备好提供更好的 explanation/more 详细信息。

试试这个:

$join = OrderAttempt::select('order_id')->selectRaw('MAX(created_at) created_at')  
    ->groupBy('order_id');
$sql = '(' . $join->toSql() . ') latest';
OrderAttempt::join(DB::raw($sql), function($join) {
    $join->on('order_attempts.order_id', 'latest.order_id')
        ->on('order_attempts.created_at', 'latest.created_at');
})->get();
$orders = OrderAttempt::select('order_id', 'created_at', 'message')->groupBy('order_id')-> sortBy('created_at', 'DESC')->get();

我已经和我的客户通过max id查询解决了这个问题。现在它可以工作并适合他的需要。