当前位置:首页 > ThinkPHP > 关键词 > 模型 > 正文

ThinkPHP 模型(Model)命名规范

ThinkPHP 对数据库的表名和模型类的命名遵循一定的规范。当项目中的表命名规则和 ThinkPHP 中的约定不符时(常常会有这种情况),ThinkPHP 允许对 Model 类的 tableNam

模型命名规范

ThinkPHP 对数据库的表名和模型类的命名遵循一定的规范。首先数据库的表名和字段全部采用小写形式,模型类的命名规则是除去表前缀的数据表名称,并且首字母大写,然后加上模型类的后缀定义。一些例子如下:

表名(不含前缀)模型名称(类名)文件名例子
userUserModelUserModel.class.phpclass UserModel extends Model{}
user_groupUserGroupModelUserGroupModel.class.phpclass 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';

表后缀

当设定了表后缀时,系统会自动识别表后缀,那么对应的定义如下:

表名(不含前缀)后缀模型名称(类名)文件名
log001001LogModelLogModel.class.php

当然如果不定义后缀,也可以单独每个模型类定义 tableName 属性,这个视乎实际情况来采取何种策略。

本文属原创,转载请注明原文:https://www.zhimatong.com/jiaocheng/544.html

为保证教程的实用性及扩大知识面覆盖,如果您有相似问题而未解决,可联系在线客服免费技术支持。

内容有用

联系
顾问

在线
客服
账号登录

没有账号?立即注册

忘记密码

登录即同意用户协议没有账号? 立即注册
账号注册
我已阅读并同意用户协议
立即注册
注册即同意用户协议已有账号? 立即登录
找回密码

操作步骤:邮箱验证->设置新密码

注册即同意用户协议已有账号? 立即登录