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

Laravel query()构造查询调用paginate()提示方法不存在问题求助

问题原因及解决方案

你第一次报错的核心原因是方法调用的对象类型错误:

  • get() 方法会直接执行SQL查询,返回的是 Illuminate\Database\Eloquent\Collection 集合实例,该实例没有 paginate() 方法
  • paginate() 是查询构造器(Illuminate\Database\Eloquent\Builder)的方法,必须在查询未执行(即还未调用get/first等触发SQL执行的方法)时调用,直接用paginate替代get的位置即可,paginate本身会执行查询并生成分页结果。

正确代码如下:

public function fetchprocedure(Request $search_procedure) {
    $filter_procedure = $search_procedure->input('search_procedure');
    $all_procedures = HmsBbrKnowledgebaseProcedure::query()
        ->when(is_null($filter_procedure), function ($query) {
            $query->where('bbr_procedure_id', '>=', 1);
        })
        ->when(!empty($filter_procedure), function ($query) use ($filter_procedure) {
            $query->where('procedure_name', 'iLIKE', "%$filter_procedure%");
        })
        ->orderBy('bbr_procedure_id', 'ASC')
        ->paginate(10); // 此处直接替换原来的get()位置

    return response()->json([
        'all_procedures' => $all_procedures,
    ]);
}

如果去掉get()后仍有报错,可按以下方向排查:

  • 确认导入的Request类为Illuminate\Http\Request,没有引错命名空间
  • 确认你的Laravel版本在5.0以上,原生支持paginate方法
  • 如果你需要单独操作当前页的数据集,可以调用$all_procedures->items()获取当前页的模型集合
  • 分页实例直接转JSON会自动携带总记录数、当前页码、每页条数、上下页链接等分页元信息,符合常规接口返回规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:18:03