• <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>

    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
    • 閱讀 ( 829 )
    • 分類:其他類型

    你可能感興趣的文章

    相關問題

    0 條評論

    請先 登錄 后評論
    聯系我們:uytrv@hotmail.com 問答工具
  • <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>
    久久久久精品国产麻豆