You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取数据库最后3条数据并按criteria_id升序展示?

解决方法

如果你的需求是获取criteria_id为4、5、6的记录,并按criteria_id升序排列,可以用这几种方式实现:

1. 直接筛选指定ID并排序

如果这3条记录的ID明确是4、5、6,直接通过whereIn限定范围,再指定升序排序即可:

$criteria = Criteria::whereIn('criteria_id', [4, 5, 6])
    ->orderBy('criteria_id', 'asc')
    ->get();

2. 先取最新3条再重新排序

如果"最后3条"是指数据库中最新生成的3条(恰好对应ID4、5、6),但查询结果是倒序的,可以用两种方式调整:

集合层面排序(Laravel内置方法)

利用Laravel集合的sortBy方法对查询结果重新排序:

$criteria = Criteria::latest()->take(3)->get()->sortBy('criteria_id');

如果需要转为数组,追加->toArray()即可。

SQL子查询二次排序

在SQL层面通过子查询先获取最新3条,再在外层按ID升序排列:

$criteria = Criteria::fromSub(
    Criteria::latest()->take(3),
    'sub_query'
)->orderBy('sub_query.criteria_id', 'asc')->get();

问题原因说明

  • 你之前用的Criteria::latest()->take(3)->get():latest()默认按创建时间(或自定义的时间字段)降序取前3条,但不会按criteria_id排序,所以结果不符合预期。
  • 直接用orderBy('criteria_id', 'desc')会得到6、5、4的倒序,把第二个参数改成asc就能得到升序结果。

内容的提问来源于stack exchange,提问作者Mas Raff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 06:30:48