think php 数据库命名,tp,thinkphp数据库表大写命名的问题

在使用thinkphp时,如果数据库表命名有大写,会被转换成小写加下划线(可以使用$model->_sql())来查看实际执行的sql是什么

这个问题,看了一下源代码,在 Thinkphp/Common/common.php里面,这个函数会将数据表(或视图)的大写字母转换为下划线+小写:

function parse_name($name, $type=0) {

if ($type) {

return ucfirst(preg_replace("/_([a-zA-Z])/e", "strtoupper('\\1')", $name));

} else {

return strtolower(trim(preg_replace("/[A-Z]/", "_\\0", $name), "_"));

//

//echo $name ;

//return $name;

}

}

另外,在 Thinkphp/Core/Model.class.php里面,会将整个表名转换成小写:

public function getTableName() {

if(empty($this->trueTableName)) {

$tableName = !empty($this->tablePrefix) ? $this->tablePrefix : '';

if(!empty($this->tableName)) {

$tableName .= $this->tableName;

}else{

$tableName .= parse_name($this->name);

}

//

$this->trueTableName = strtolower($tableName);

//$this->trueTableName = $tableName;

}

return (!empty($this->dbName)?$this->dbName.'.':'').$this->trueTableName;

}

这样有好处——规范。

但是在我们的开发中,有大写的数据表,所以改了一下(注释的那些)...

或者可以在模型定义里面加上:

protected $trueTableName = 'myTableName';

来覆盖$this->trueTableName

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值