多语言展示
当前在线:1644今日阅读:27今日分享:41

Thinkphp5 中字段别名是汉字报错的解决办法

Thinkphp5 中字段别名是汉字,提示错误:不支持的数据表达式
工具/原料
1

thinkphp5框架

2

浏览器

3

编辑器

方法/步骤
1

今日小编在学习tp5模型操作的过程中,遇到了一个错误在这里记录一下,如果大家也遇到了这样的问题,可以根据小编的提示进行bug调试。

2

代码:         $user = new User;        $where = function($query){            $query->field(['phone'=>'手机号'])->where('id',1);        };        dump($user -> find($where)); 返回错误信息:不支持的数据表达式:手机号

3

根据提示,错误的问题是发生在Mysql.php文件的第113行。那么我们就要找出文件所对应的代码

4

通过检查发现,是因为正则表达式的问题。\w只匹配数字字母下划线,匹配不到汉字。 所以我们要在正则表达式上加上汉字匹配 if ($strict && !preg_match('/^[\w\.\*\x00-\xff]+$/', $key)) {        throw new Exception('not support data:' . $key);} 这样程序就可以正常运行了

5

或者使用另外一种起别名方法         $user = new User;        $where = function($query){            $query->field('phone as 手机号')->where('id',1);        };        dump($user -> find($where)->getData()); 结果与上一种别名方式一样

6

tp框架应用Trace默认是关闭状态我们修改'app_trace'  => true, 在执行代码的时候右下角会有一个图标

7

点击右下角图标我们就能查看应用执行的SQL、错误信息等工具方便我们进行项目调试

注意事项

处处是bug,一个bug一个坑。

推荐信息