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

Laravel含转义字符查询返回空结果问题求助

解决Laravel查询linkedModel字段返回空的问题

排查方向及解决办法

  • 验证实际执行的SQL语句
    先打印Laravel生成的SQL和绑定参数,确认传递给数据库的查询条件是否和存储值一致:

    $query = User::where('linkedModel','App\Models\Settings');
    dd($query->toSql(), $query->getBindings());
    

    对比输出的参数和数据库中linkedModel列的实际存储值,排查是否存在字符转义、拼写或大小写差异。

  • 检查软删除影响
    如果User模型使用了SoftDeletes trait,默认查询会自动过滤已软删除的数据,可强制包含所有记录测试:

    $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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:25:29