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

Laravel项目按升序展示数据失败问题求助

问题分析与修正方案

你的代码存在几个关键问题,导致无法按预期实现升序排序并返回JSON:

错误点说明

  • all()方法误用:Course::all()会立即执行查询并返回Eloquent集合,集合对象没有paginate()方法,这会直接抛出错误。应该直接使用查询构造器链式调用,无需先调用all()。
  • 排序逻辑位置错误:orderBy('id', 'asc')和get()被放在response()->json()之后,但response()->json()返回的是JsonResponse实例,不存在这些方法,排序逻辑完全没有生效。
  • SQL注入风险:直接拼接"%$keyword%"到查询语句中,存在SQL注入隐患,应该使用更安全的查询方式。

修正后的代码

$keyword = $request->get('search');
$perPage = 25;

// 初始化查询构造器,提前添加升序排序规则
$query = Course::query()->orderBy('id', 'asc');

if (!empty($keyword)) {
    // 安全添加模糊查询条件
    $query->where('name', 'LIKE', "%{$keyword}%");
}

// 执行分页查询
$courses = $query->paginate($perPage);

// 返回JSON格式的分页结果
return response()->json($courses);

关键修正细节

  1. 基础查询构造器初始化:用Course::query()创建查询构造器,提前加入orderBy('id', 'asc'),确保所有查询结果都按id升序排列。
  2. 条件查询链式处理:根据搜索关键词动态添加where条件,全程使用查询构造器链式调用,避免提前执行查询导致的方法调用错误。
  3. 安全分页与返回:通过paginate($perPage)获取分页结果集,直接传入response()->json()即可,Laravel会自动将分页对象序列化为包含数据、分页信息的标准JSON结构。

内容的提问来源于stack exchange,提问作者John Peter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 01:52:43