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

Laravel无参数调用find加动态where后分页的报错问题咨询

错误原因

find() 是Eloquent提供的按主键查询单条记录的方法,必须传入对应主键值作为参数,你这里直接调用find()不传参数,自然会抛出参数不足的错误,而且这个方法返回的是模型实例/空,也不能继续链式调用where()、paginate()这类查询构造器方法。

修正方案

初始化查询构造器应该调用query()方法,调整后的代码如下:

$roles = Role::query();
if (!empty($request->get("globalFilter"))){
    $roles->where('name','LIKE','%' . $request->get("globalFilter"). '%');
}
// 给perPage设置默认值,避免参数为空时报错
return response()->json($roles->paginate($request->get("perPage", 10)));

可选简化写法

可以用Laravel提供的when()条件查询方法简化代码,省略手动if判断:

return response()->json(
    Role::query()
        ->when($request->filled('globalFilter'), function ($query) use ($request) {
            $query->where('name', 'LIKE', "%{$request->get('globalFilter')}%");
        })
        ->paginate($request->get('perPage', 10))
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 23:36:04