thinkphp如果表名有下划线需要用Model
2016-06-21 12:51
841 查看
模型命名规范
ThinkPHP 对数据库的表名和模型类的命名遵循一定的规范。首先数据库的表名和字段全部采用小写形式,模型类的命名规则是除去表前缀的数据表名称,并且首字母大写,然后加上模型类的后缀定义。一些例子如下:表名(不含前缀) | 模型名称(类名) | 文件名 | 例子 |
---|---|---|---|
user | UserModel | UserModel.class.php | class UserModel extends Model{} |
user_group | UserGroupModel | UserGroupModel.class.php | class UserGroupModel extends Model{} |
当项目中的表命名规则和 ThinkPHP 中的约定不符时(常常会有这种情况),ThinkPHP 允许对 Model 类的 tableName 和 trueTableName 属性进行设置以达到兼容的目的。
tableName 属性
当表前缀和系统设置的前缀(DB_PREFIX)一致而表名和模型名称不一致时,可设置此属性,例如表名称为 users ,而模型名称为 UserModel ,那么需要在模型类设置:class UserModel extends Model{ protected $tableName = 'users'; }
trueTableName 属性
如果表的前缀跟系统设定的不一致(表名和模型名可能一致)时,需要设定模型的 trueTableName 属性:class UserModel extends Model{ protected $trueTableName = 'my_user'; }
注意 trueTableName 值为完整的表名(包括前缀)。
dbName 属性
dbName 属性定义模型当前对应的数据库名称,只有当前的模型类对应的数据库名称和配置文件不同的时候才需要定义:protected $dbName = 'cdb';
表:think_hello_world
模型:HelloWorldModel.class.php
代码
# HelloWorldModel.class.php
namespace ...
use ...
classs HelloWorldModel extend Model {
public function getYourHeader() {
}
}
# 使用
D('HelloWorld')->getYourHeader();
# 模型名称不能使用下划线,如果是使用D加载模型
复制代码
就这样,就已经是操作think_hello_world表了啊
Hassan2014年08月20日
你就不能认真看手册么?有人回答你了,你还扯着trueTableName 属性不放...
回复Keith_hzw2014年08月20日
如果以前用3.1写的数据库表有下划线,难道你更新到3.2就把数据库的表的名字全改了吗
yurke2014年08月19日
手册上有明确说明的。使用首字母大写,后面的用驼峰
回复Keith_hzw2014年08月19日
如果你的表有下划线?还能用驼峰法?protected $trueTableName = "goods_class"; 这句会把本应该 前缀_goods_class 改为 前缀.goods_class
回复yurke2014年08月19日
回复 Keith_hzw : 你有注意到别人的发言吗?首先首字母大写,然后任何下划线都去掉紧接着的字母大写。D('GoodsClass');有注意到这个C大写吗???
回复yurke2014年08月19日
回复 Keith_hzw : 还有你的文件名就有问题,同理文件名也要这样写的。你在文件名也加下划线,你质疑别人可以,但是好歹也先看下手册。
回复yurke2014年08月19日
回复 Keith_hzw : GoodsClassModel.class.php这才是对应你表名的文件名,基本规范建议遵守
Keith_hzw2014年08月19日
你说D('Goodsclass'),再在里面加protected $trueTableName = "goods_class"; 这句来确定表名吧,,但如果表名有下滑线,会出错
aphpyzr2014年08月19日
D('GoodsClass');
回复云端o枫o02014年08月20日
此乃正解,楼主建议你多看看手册,还有命名规范里的说明!
相关文章推荐
- FTP服务搭建
- 采用PHP函数uniqid生成一个唯一的ID
- PHP递归实现无限级分类
- PHP中的魔术方法总结 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toStr
- ThinkPhp路径访问问题
- PHP的serialize序列化数据与JSON格式化数据
- CakePHP3.2 api 之读写分离
- php 发送验证码到邮箱
- PHP 根据URL将图片下载到本地
- 新浪云-PHP实现上传原图,缩略图
- laravel 重写以及500错误
- php json_encode中文unicode问题
- PSFTP简单用法
- ftp搭建
- php函数ob_start()、ob_end_clean()、ob_get_contents()
- PHP租房子练习
- PHP投票练习
- php中命名空间的使用
- PHP面向对象总结
- 使用phpstom的点点滴滴记录,持续更新中...