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

使用变量时Eloquent查询返回NULL,直接写值正常的问题求助

问题排查与解决

针对你遇到的Eloquent查询用变量返回NULL、直接写值正常的问题,给你几个实用的排查方向:

  • 检查变量是否含隐藏空白字符
    很多时候变量看起来是Test123,但实际前后带有空格、换行或制表符。你可以:

    • 用trim()处理变量后再查询:
      $code = trim($code);
      LiveProducts::where('code', $code)->first();
      
    • 对比变量和目标字符串的长度:
      echo strlen($code); // 输出变量长度
      echo strlen('Test123'); // 正常输出应为7
      
    • 用var_dump($code)查看变量详细内容,确认没有额外字符。
  • 对比十六进制值排查编码/不可见字符
    如果变量和目标字符串视觉一致但匹配失败,可能存在编码差异或不可见Unicode字符。将两者转成十六进制对比:

    echo bin2hex($code);
    echo bin2hex('Test123'); // 正常输出应为54657374313233
    

    若输出不一致,说明变量存在隐藏字符,需要清理。

  • 确认数据库字段的大小写敏感性
    检查code字段的collation设置,如果是区分大小写的类型(比如utf8mb4_bin),要确保变量的大小写和数据库存储内容完全一致。

  • 排查变量是否被意外修改
    在执行查询的前一行立即打印变量值,确认它没有被其他代码篡改:

    var_dump($code); // 确认值确实是'Test123'
    LiveProducts::where('code', $code)->first();
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 15:42:02