Laravel含转义字符查询返回空结果问题求助
解决Laravel查询linkedModel字段返回空的问题
排查方向及解决办法
验证实际执行的SQL语句
先打印Laravel生成的SQL和绑定参数,确认传递给数据库的查询条件是否和存储值一致:$query = User::where('linkedModel','App\Models\Settings'); dd($query->toSql(), $query->getBindings());对比输出的参数和数据库中
linkedModel列的实际存储值,排查是否存在字符转义、拼写或大小写差异。检查软删除影响
如果User模型使用了SoftDeletestrait,默认查询会自动过滤已软删除的数据,可强制包含所有记录测试:$data = User::withTrashed()->where('linkedModel','App\Models\Settings')->get();用原生SQL直接验证
绕开Laravel查询构造器,执行原生SQL确认数据库层面是否能查到数据:$data = DB::select("SELECT * FROM users WHERE linkedModel = 'App\Models\Settings'");如果原生查询也无结果,说明数据库存储的值和预期存在差异(比如包含不可见字符、大小写不匹配)。
处理大小写敏感性
若MySQL表使用utf8_bin等区分大小写的字符集,需针对性调整查询:// 严格匹配大小写 $data = User::whereRaw('BINARY linkedModel = ?', ['App\Models\Settings'])->get(); // 忽略大小写匹配 $data = User::whereRaw('LOWER(linkedModel) = LOWER(?)', ['App\Models\Settings'])->get();直接复制数据库存储值查询
从数据库中复制目标记录的linkedModel字段值,直接粘贴到查询语句中,避免手动输入导致的字符错误:// 替换为从数据库复制的真实值 $data = User::where('linkedModel', 'App\Models\Settings')->get();
内容的提问来源于stack exchange,提问作者Test Test
相关产品推荐
相关产品推荐

