今天设计了一个数据表名为cmf_survey_company的表,在实例话的时候用D("Common/Surveycompany"),发现一直报报不到cmf_surveycompany这个表,花了几个小时找到原因了,原来是MODEL在获取表名的时候,会判断字符串是否有大写字母,如果有,刚把字符串以“_”连起来,所以用D("Common/SurveyCompany"),即可解决找到表“cmf_survey_company”
/**
* 得到完整的数据表名
* @access public
* @return string
*/
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);
}
return (!empty($this->dbName)?$this->dbName.‘.‘:‘‘).$this->trueTableName;
}
/**
* 字符串命名风格转换
* type 0 将Java风格转换为C的风格 1 将C风格转换为Java的风格
* @param string $name 字符串
* @param integer $type 转换类型
* @return string
*/
function parse_name($name, $type=0) {
if ($type) {
return ucfirst(preg_replace_callback(‘/_([a-zA-Z])/‘, function($match){return strtoupper($match[1]);}, $name));
} else {
return strtolower(trim(preg_replace("/[A-Z]/", "_\\0", $name), "_"));
}
}