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

Laravel报Call to a member function where() on null错误如何解决

错误原因

报错Call to a member function where() on null本质是你调用where()方法的对象是null,对应代码的问题点如下:

  • find()是Eloquent用来按主键查单条记录的方法,你传入的参数是字符串'id'而非真实的主键ID值,数据库查不到匹配记录时会直接返回null,null不是对象实例,自然无法调用where()成员方法。
  • 模型命名不符合Laravel约定:Eloquent模型默认使用帕斯卡命名(大驼峰),product_category正确的类名应为ProductCategory,类名写错会触发类加载异常,也会导致调用链断裂返回null。
  • 查询逻辑语法完全错误:find()执行后已经返回单条模型结果(或null),不需要再链式调用where()、get();且where()方法至少需要传入两个参数(字段名、匹配值),你只传了字段名本身语法就不成立,get()是查询构造器获取多条结果的方法,和find()的单条查询场景完全不匹配。
修复方法

根据实际查询需求二选一调整代码即可:

  • 场景1:查询全部分类/带条件的多条分类记录
// 替换为你实际的模型类名,全量查询直接用all()
$product_category = ProductCategory::all();
// 带条件查询的正确写法示例:查询id大于0的分类
// $product_category = ProductCategory::where('id', '>', 0)->get();
return view('product_category', compact('product_category'));
  • 场景2:查询指定ID的单条分类记录
// 把$id替换为你实际要查询的主键ID值,比如从路由/请求中获取的参数
$product_category = ProductCategory::find($id);
// 增加兜底判断,查不到数据时返回404,避免后续模板渲染报错
if (is_null($product_category)) {
    abort(404);
}
return view('product_category', compact('product_category'));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:03:18