文档章节

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

ifeixiang
 ifeixiang
发布于 2014/10/31 17:48
字数 331
阅读 11
收藏 0

在使用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

© 著作权归作者所有

ifeixiang
粉丝 16
博文 270
码字总数 99506
作品 0
广州
程序员
私信 提问
ThinkPHP中自动验证失败

本人最近刚开始学ThinkPHP,在练习的过程中遇到了一些问题。下面是我在进行TP自动验证时遇到的问题! 表名是test_member Controller代码如下: <?phpnamespace RegiterController;use ThinkC...

等风1306
2014/08/01
1K
0
由mysql表名大小写所知道

今天遇到一个问题是: 在mysql手动创建数据库表(大写表名,小写字段名)后,启动项目后发现,hibernate又给我生成了一个小写的同结构表,猜想到会不会是mysql表名区分大小写后,google一下,...

wayne很忙
2013/02/26
700
0
ayhome/ThinkphpHelper

ThinkPHP开发助手 标签(空格分隔): ThinkPHP 助手 帮助 简介 说明 TPHelper能做的 TPHelper不能的 TPHelper组织架构 安装 开始 应用管理 模块管理 表单设计 如何调用 标签使用 内置标签 ...

ayhome
2014/11/05
0
0
ThinkPHP 3.2 自定义基类 Model

  ThinkPHP 提供了一个 Model 类,供其他的 Model 进行继承。Model 类中是 MVC 中的模型类,它是调用 持久层 的上层类。感觉这么描述问题很多,但是有什么办法呢?但是,这个 Model 有时无...

tosser
2018/08/04
0
0
WangWei/WXForEcms

WxPlug_TP5 (WXForEcms) v1.0.0.1231 基于 ThinkPHP5 5.0.3 运行环境要求PHP5.4以上 使用请参考 作者网站 二次开发除参考上述网站内容外,还需参考ThinkPHP5完全开发手册 router.php用于p...

WangWei
2017/08/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习之模块

1、 stub_status模块: 用于展示nginx处理连接时的状态。 配置语法如下: Syntax:stub_status;Default:默认没有配置Context:server、location 可以编辑default.conf,加上如下配置: ...

码农实战
44分钟前
4
0
MySQL,必须掌握的6个知识点

目录 一、索引B+ Tree 原理 MySQL 索引 索引优化 索引的优点 索引的使用条件 二、查询性能优化使用 Explain 进行分析 优化数据访问 重构查询方式 三、存储引擎InnoDB MyISAM 比较 四、数据类...

李红欧巴
48分钟前
4
0
堆”和“栈

C++作为一款C语言的升级版本,具有非常强大的功能。它不但能够支持各种程序设计风格,而且还具有C语言的所有功能。我们在这里为大家介绍的是其中一个比较重要的内容,C++内存区域的基本介绍。...

SibylY
59分钟前
4
0
总结:Https

一、介绍 简单理解,https即在http协议的基础上,增加了SSL协议,保障数据传输的安全性。 它由以前的http—–>tcp,改为http——>SSL—–>tcp;https采用了共享密钥加密+公开密钥加密的方式 ...

浮躁的码农
今天
6
0
数据库表与表之间的一对一、一对多、多对多关系

表1 foreign key 表2 多对一:表 1 的多条记录对应表 2 的一条记录 利用foreign key的原理我们可以制作两张表的多对多,一对一关系 多对多: 表1的多条记录可以对应表2的一条记录 表2的多条记...

Garphy
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部