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

校服杀人魔 测试资讯评论84字数 1098阅读模式
摘要  在使用thinkphp时,如果数据库表命名有大写,会被转换成小写加下划线(可以使用$model->_sql())来查看实际执行的sql是什么  这个问

  在使用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]/", "_ ", $name), "_"));
6 //<feixiang 2013年7月6日 这里会将数据库表名里的大写转换为 _小写,这里不转换,在Model.class.php还将表转换成了小写,需要改一下 >
7 //echo $name ;
8 //return $name;
9 }
10 }

  另外,在 Thinkphp/Core/Model.class.php里面,会将整个表名转换成小写:文章源自玩技e族-https://www.playezu.com/204420.html

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文章源自玩技e族-https://www.playezu.com/204420.html 文章源自玩技e族-https://www.playezu.com/204420.html

玩技站长微信
添加好友自动发送入群邀请
weinxin
rainbow-shownow
玩技官方公众号
官方微信公众号
weinxin
PLAYEZU
 
  • 版权提示:本站仅供存储任何法律责任由作者承担▷诈骗举报◁▷新闻不符◁▷我要投稿◁
    风险通知:非原创文章均为网络投稿真实性无法判断,侵权联系2523030730
    免责声明:内容来自用户上传发布或新闻客户端自媒体,切勿!切勿!切勿!添加联系方式以免受骗。
  • 原创转载:https://www.playezu.com/204420.html
    转载说明: 点我前往阅读>>>
匿名

发表评论

匿名网友
确定