我有一个表(简化版)用于记录订单的历史记录:
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
如果需要,我已准备好提供更好的解释/更多细节。
答案 0 :(得分:1)
试试这个:
$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();
答案 1 :(得分:0)
$orders = OrderAttempt::select('order_id', 'created_at', 'message')->groupBy('order_id')-> sortBy('created_at', 'DESC')->get();
答案 2 :(得分:0)
我通过查询max id与我的客户解决了这个问题。现在它起作用并且适合他的需要。