Laravel中如何使用where()函数并传入变量获取数据库记录?
解决数据库查询中无法使用变量$I->id的问题
嘿,我之前在项目里也碰到过类似的变量传递到查询构建器的问题,给你几个实用的排查和解决思路:
先确认变量的有效性
第一步一定要先排查$I->id本身是不是有值,比如在查询前加一行调试代码:var_dump($I->id); // 看看输出是null、预期的ID值还是其他类型如果输出是
null,那问题根本不在查询语句,而是你没给$I对象的id属性正确赋值(比如在测试场景里,是不是漏了把创建记录后的ID存到$I->id里?)。调整变量传递的方式
有些查询构建器对对象属性的直接解析可能存在兼容问题,你可以先把属性值转成普通变量再传入:$targetId = $I->id; // 单个ID用where $records = DB::table('your_table')->where('id', $targetId)->get(); // 如果是多个ID集合用whereIn $records = DB::table('your_table')->whereIn('id', $targetId)->get();检查whereIn的参数格式
如果你用的是whereIn,第二个参数必须是数组类型,哪怕只有单个ID也得包成数组:// 错误写法:直接传单个值 $records = DB::table('your_table')->whereIn('id', $I->id)->get(); // 正确写法:包装成数组 $records = DB::table('your_table')->whereIn('id', [$I->id])->get();排查作用域问题(如果是闭包场景)
要是你的查询是放在闭包里执行的,得确保$I变量被引入到闭包作用域里:$records = DB::table('your_table')->where(function ($query) use ($I) { $query->where('id', $I->id); })->get();
内容的提问来源于stack exchange,提问作者Toti Cuervo
相关产品推荐
相关产品推荐

