欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > 数据库 >内容正文

数据库

tp数据库表大写命名的一些问题

发布时间:2024/4/15 数据库 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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数据库表大写命名的一些问题的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。