tp数据库表大写命名的一些问题
生活随笔
收集整理的這篇文章主要介紹了
tp数据库表大写命名的一些问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
在使用thinkphp時,如果數據庫表命名有大寫,會被轉換成小寫加下劃線(可以使用$model->_sql())來查看實際執行的sql是什么
這個問題,看了一下源代碼,在 Thinkphp/Common/common.php里面,這個函數會將數據表(或視圖)的大寫字母轉換為下劃線+小寫:
1 function parse_name($name, $type=0) { 2 if ($type) { 3 return ucfirst(preg_replace("/_([a-zA-Z])/e", "strtoupper('\\1')", $name)); 4 } else { 5 return strtolower(trim(preg_replace("/[A-Z]/", "_\\0", $name), "_")); 6 //<feixiang 2013年7月6日 這里會將數據庫表名里的大寫轉換為 _小寫,這里不轉換,在Model.class.php還將表轉換成了小寫,需要改一下 > 7 //echo $name ; 8 //return $name; 9 } 10 }另外,在?Thinkphp/Core/Model.class.php里面,會將整個表名轉換成小寫:
1 public function getTableName() { 2 if(empty($this->trueTableName)) { 3 $tableName = !empty($this->tablePrefix) ? $this->tablePrefix : ''; 4 if(!empty($this->tableName)) { 5 $tableName .= $this->tableName; 6 }else{ 7 $tableName .= parse_name($this->name); 8 } 9 //<feixiang 這里會將表名轉換成小寫,我們這里不轉換> 10 $this->trueTableName = strtolower($tableName); 11 //$this->trueTableName = $tableName; 12 } 13 return (!empty($this->dbName)?$this->dbName.'.':'').$this->trueTableName; 14 }這樣有好處——規范。
但是在我們的開發中,有大寫的數據表,所以改了一下(注釋的那些)...
或者可以在模型定義里面加上:
protected?$trueTableName?=?'myTableName';
來覆蓋$this->trueTableName
轉載于:https://my.oschina.net/ifeixiang/blog/339418
總結
以上是生活随笔為你收集整理的tp数据库表大写命名的一些问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js中null和undefined
- 下一篇: mysql 分区表详解