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

Thinkphp5 中字段别名是汉字,提示错误:不支持的数据表达式

东西/原料

  • thinkphp5框架
  • 浏览器
  • 编纂器

方式/步调

  1. 1

    今日小编在进修tp5模子操作的过程中,碰到了一个错误

    在这里记实一下,若是大师也碰到了这样的问题,可以按照小编的提醒进行bug调试。

  2. 2

    代码:

            $user = new User;

            $where = function($query){

                $query->field(['phone'=>"手机号"])->where('id',1);

            };

            dump($user -> find($where));


    返回错误信息:不撑持的数据表达式:手机号

  3. 3

    按照提醒,错误的问题是发生在Mysql.php文件的第113行。

    那么我们就要找出文件所对应的代码

  4. 4

    经由过程查抄发现,是因为正则表达式的问题。

    \w只匹配数字字母下划线,匹配不到汉字。

    所以我们要在正则表达式上加上汉字匹配


    if ($strict && !preg_match('/^[\w\.\*\x00-\xff]+$/', $key)) {

            throw new Exception('not support data:' . $key);

    }


    这样程序就可以正常运行了

  5. 5

    或者利用别的一种起别号方式


            $user = new User;

            $where = function($query){

                $query->field('phone as 手机号')->where('id',1);

            };

            dump($user -> find($where)->getData());


    成果与上一类别名体例一样

  6. 6

    tp框架应用Trace默认是封闭状况

    我们点窜

    'app_trace'  => true,


    在执行代码的时辰右下角会有一个图标

  7. 7

    点击右下角图标

    我们就能查看应用执行的SQL、错误信息等东西

    便利我们进行项目调试

    END

注重事项

  • 处处是bug,一个bug一个坑。
  • 发表于 2020-04-03 19:00
  • 阅读 ( 824 )
  • 分类:其他类型

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
联系我们:uytrv@hotmail.com 问答工具