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

Laravel搜索分页报错Call to a member function paginate() on string

报错根因

代码括号位置错误,->paginate(5)被错误写在where方法的第三个参数内部,实际是对拼接后的搜索字符串'%' .$request->search. '%'调用分页方法,字符串类型不存在paginate成员方法,因此触发报错。
原错误代码等效于以下逻辑,必然触发报错:

// 错误逻辑拆解
$searchStr = '%' .$request->search. '%'->paginate(5); // 对字符串调用成员方法
$data = rekap::where('customer','LIKE', $searchStr);
修复方案

调整括号位置,让paginate()作为查询构造器的链式方法调用,同时补上搜索参数透传逻辑,避免翻页时丢失搜索条件,修正后的控制器代码如下:

public function index(Request $request) {
    if ($request->has('search')) {
        // where方法闭合后再调用paginate
        $data = rekap::where('customer', 'LIKE', '%' . $request->search . '%')->paginate(5);
    } else {
        $data = rekap::paginate(5);
    }
    // 分页链接附加请求参数,保留搜索状态
    $data->appends($request->all());

    return view('rekap', compact('data'));
}

原有视图部分的表单、分页渲染代码不需要修改,可正常运行。

可选优化写法

可以用when方法简化条件判断,同时给搜索参数加默认空值容错,代码更简洁:

public function index(Request $request) {
    $keyword = $request->input('search', '');
    $data = rekap::when($keyword, function($query) use ($keyword) {
            $query->where('customer', 'LIKE', "%{$keyword}%");
        })
        ->paginate(5)
        ->appends($request->all());

    return view('rekap', compact('data'));
}

另外建议模型类名遵循PHP大驼峰命名规范,将rekap修改为Rekap,符合Laravel框架默认命名约定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 23:09:41