thinkphp查询数据库问题
时间:2011-06-09
来源:互联网
我在开发项目的时候有个model中输入的表名是大写的,但是thinkphp给我全部转义成小写了,而且还在我的表明中加入了下划线,导致数据库查询失败。这个问题怎么解决?
public function index()
{
$User = new Model("UserInfo");
$data = $User->find(1);
dump($data);
//$this->display();
$this->login();
}
调试日志信息:
public function index()
{
$User = new Model("UserInfo");
$data = $User->find(1);
dump($data);
//$this->display();
$this->login();
}
调试日志信息:
作者: hijoys 发布时间: 2011-06-09
5.3.2 模型命名
thinkphp.cn/Manual/81
thinkphp.cn/Manual/81
当我们创建一个UserModel类的时候,其实已经遵循了系统的约定。ThinkPHP要求数据库的表名和模型类的命名遵循一定的规范,首先数据库的表名和字段全部采用小写形式,模型类的命名规则是除去表前缀的数据表名称,并且首字母大写,然后加上模型类的后缀定义,例如:
UserModel 表示User数据对象,(假设数据库的前缀定义是 think_)其对应的数据表应该是
think_user
UserTypeModel 对应的数据表是 think_user_type
如果你的规则和系统的约定不符合,那么需要设置Model类的tableName属性。
UserModel 表示User数据对象,(假设数据库的前缀定义是 think_)其对应的数据表应该是
think_user
UserTypeModel 对应的数据表是 think_user_type
如果你的规则和系统的约定不符合,那么需要设置Model类的tableName属性。
作者: gulize 发布时间: 2011-06-10
你说可以设置那个Model类的tableName属性,请问如何设置?
作者: hijoys 发布时间: 2011-06-10
问题解决了。
此文件在Z:\ThinkPHP\Lib\Think\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);
$tableName .= trim($this->name);
}
$tableName .= !empty($this->tableSuffix) ? $this->tableSuffix : '';
if(!empty($this->dbName))
$tableName = $this->dbName.'.'.$tableName;
//$this->trueTableName = strtolower($tableName); //原来配置
$this->trueTableName = trim($tableName); //修改过的配置
}
return $this->trueTableName;
}
作者: hijoys 发布时间: 2011-06-10
不知道修改过后会不会有问题
作者: hijoys 发布时间: 2011-06-10
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28