thinkphp5框架
浏览器
编辑器
今日小编在学习tp5模型操作的过程中,遇到了一个错误在这里记录一下,如果大家也遇到了这样的问题,可以根据小编的提示进行bug调试。
代码: $user = new User; $where = function($query){ $query->field(['phone'=>'手机号'])->where('id',1); }; dump($user -> find($where)); 返回错误信息:不支持的数据表达式:手机号
根据提示,错误的问题是发生在Mysql.php文件的第113行。那么我们就要找出文件所对应的代码
通过检查发现,是因为正则表达式的问题。\w只匹配数字字母下划线,匹配不到汉字。 所以我们要在正则表达式上加上汉字匹配 if ($strict && !preg_match('/^[\w\.\*\x00-\xff]+$/', $key)) { throw new Exception('not support data:' . $key);} 这样程序就可以正常运行了
或者使用另外一种起别名方法 $user = new User; $where = function($query){ $query->field('phone as 手机号')->where('id',1); }; dump($user -> find($where)->getData()); 结果与上一种别名方式一样
tp框架应用Trace默认是关闭状态我们修改'app_trace' => true, 在执行代码的时候右下角会有一个图标
点击右下角图标我们就能查看应用执行的SQL、错误信息等工具方便我们进行项目调试
处处是bug,一个bug一个坑。