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数据库表大写命名的一些问题相关推荐

  1. 《Activiti 深入BPM工作流 》--- 数据库表的命名规则是什么?

    <Activiti 深入BPM工作流 >---  数据库表的命名规则是什么? 一. 问题:  数据库表的命名规则是什么? 二. 详细      Activiti的表都是以ACT_ 开头. ...

  2. 【Spring】jpa数据库表实体命名规则 Unknown column ‘user0_.create_time‘ in ‘field list‘

    1.概述 转载: https://www.cnblogs.com/wgslucky/p/10109691.html 数据库,表字段命名是驼峰命名法(createTime),Spring data jp ...

  3. 数据库表及字段命名、设计规范

    1数据库表及字段命名.设计规范 1.1数据库表数据库表的命名规范: 表的前缀应该用系统或模块的英文名的缩写(全部大写或首字母大写).如果系统功能简单,没有划分为模块,则可以以系统英文名称的缩写作为前缀 ...

  4. 数据库表和表字段的命名规范

    由于最近一直忙着写毕业设计论文,所以没有更新博客,在整理毕设系统的数据库表的时候感觉之前的数据库表的命名格式有很大的问题,所以通过上网查阅资料整理了以下资料. 数据表名的命名规范 采用26个英文字母( ...

  5. eclipselink 数据库表命名规则 驼峰转下划线/表名转换

    最近公司做SAAS项目,以前用的数据源为c3p0,数据库表的命名规则为类名(驼峰)转为下划线. 比如:PersonMsg (类)  对应  表名 person_msg(表) 而现在公司用的是eclip ...

  6. web mysql 界面表命名规范_MySql数据库表字段命名及设计规范

    1.设计原则 1) 标准化和规范化web 数据的标准化有助于消除数据库中的数据冗余.标准化有好几种形式,但 Third Normal Form(3NF)一般被认为在性能.扩展性和数据完整性方面达到了最 ...

  7. Oracle数据库建表 Oracle数据库的统一命名与编码规范

    本文转载自:http://chinaxxren.iteye.com/blog/889590 如有疑问请咨询原博主,谢谢!! 写在前边: 规范是一种习惯,在Oracle数据库中笔者认为表中的字段命名规范 ...

  8. mysql 字段名称规范_数据库表及字段命名规范

    数据库设计表及字段命名规范(我整理的,望大家多多提建议) 1.数据库表命名规范: (1)表名前应该加上前缀,表的前缀一个用系统或模块的英文名称缩写,前缀全部大写或首字母大写,表名中包含的单词首字母大写 ...

  9. 重命名数据库表空间和数据文件

    一.重命名数据库表空间名 使用alter tablespace- rename to命令,可以重命名一个永久或者临时表空间.例如,下面重命名users表空间: Alter tablespace tbs ...

最新文章

  1. 三个球数求最大值c语言,C语言中一个简单的球3个数最大数的程序中,最后一步:printf(apos;apos;max=%d\napos;apos;,max);怎么理解...
  2. Go语言、Docker 和新技术
  3. 记录ionic 最小化应用时所遇的问题
  4. Yii2.0在GridView中下拉过滤筛选的实现
  5. 来自Google的面试题,真的有趣!果然与众不同
  6. python帮助文件如何设为中文_如何使用Python将.CHM帮助文件存储为文本?
  7. java bufferedreader读大文件会内存溢出吗_深度分析:java中的字符流与字节流,以及缓存流,一次性帮你全掌握...
  8. mycat启动服务,后台日志报错Bit Server VM warning: ignoring option MaxPermSize
  9. 挤房工具发布--支持最新版浩方和VS平台
  10. 科技小科普】物联网的八大核心技术
  11. 罗格斯大学电气与计算机工程专业怎么样,罗格斯大学计算机工程排行,千万得细心点听懂...
  12. 【每日一GO】加密解密库—dongle
  13. 如何打造以人为本的移动游戏
  14. 一英寸芯片大小_Mac mini新款M1芯片详细参数配置规格 尺寸、重量等详细参数
  15. 阅读《精通Python爬虫框架Scrapy》
  16. 相距两千多公里,仅仅数月,从相亲走到结婚 | 2022年复盘日记
  17. matlab绘制动态图,Matlab绘制动态图的两种方式(参考)
  18. 用vulkan写个引擎 (一)综述
  19. Android开发MVP模式(解决了View和Model的耦合)
  20. 目前CSDN上最全面的C语言讲解如何用更高层次编写嵌入式C代码

热门文章

  1. 鸿蒙系统小卡片,升级鸿蒙101版本,UI审美升级了
  2. 记录 spring 使用@Value获取properties文件中的属性值
  3. js 字符转换,小驼峰转大写字母开头并且加空格 changeDate -》 Change Date
  4. catkin_make与gtest出现冲突的问题与解决
  5. a标签缺少href 属性,鼠标经过不会出现手型
  6. Hibernate性能提升
  7. start.s中的.balignl 16,0xdeadbeef
  8. 2.struts1.x中的异常处理
  9. java中的神奇this
  10. Cannot SET AUTOTRACE 处理办法