Laravel中如何实现数据库最新记录优先展示
Laravel查询实现最新入库记录优先排序方法
问题原因
当前查询未手动指定排序规则时,数据库默认按数据物理存储顺序/主键升序返回结果,因此最早入库的记录会排在结果集首位。
调整方案
在查询构造器中调用orderBy方法,指定排序字段为倒序(desc)即可实现最新记录靠前展示,有两种常用的排序字段选择:
- 按
created_at创建时间字段倒序:完全匹配「最新入库」的业务语义,适合存在数据导入、手动调整主键的场景,也是Laravel项目的首选方案 - 按自增主键
id倒序:自增ID随记录插入逐次递增,ID越大记录越新,排序性能优于时间字段,适合无特殊数据操作的常规业务场景
修改后代码
按创建时间排序(推荐)
if($status == 'pending'){ $datas = Order::where('status','=','pending') ->orderBy('created_at', 'desc') ->get(); }
按自增主键ID排序
if($status == 'pending'){ $datas = Order::where('status','=','pending') ->orderBy('id', 'desc') ->get(); }
注意:如果你的Order模型关闭了自动维护时间戳(配置了
public $timestamps = false),请选择按主键ID排序的方案,否则会报字段不存在的错误。
内容的提问来源于stack exchange,提问作者Deepu
相关产品推荐
相关产品推荐

