位置: 编程技术 - 正文

ThinkPHP模型详解(thinkphp 模型)

编辑:rootadmin

推荐整理分享ThinkPHP模型详解(thinkphp 模型),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:thinkphp模型类和db性能,thinkphp模型类和db性能,thinkphp5模型,thinkphp模块,thinkphp模型类和db性能,thinkphp模块,thinkphp6模型,thinkphp6模型,内容如对您有帮助,希望把文章链接给更多的朋友!

模型定义,默认情况下,ThinkPHP的模型类是位于/Home/Model/目录之下,模型类通常需要继承系统的ThinkModel类或其子类,下面是一个HomeModelUserModel类的定义:

文件命名遵守UserModel.class.php的方式,跟控制器的命名一样

模型类的作用大多数情况是操作数据表的,如果按照系统的规范来命名模型类的话,大多数情况下是可以自动对应数据表,但你可以根据自己的需求来定制自己的数据表设置和操作。

首先我们需要在配置文件设置我们的数据库连接信息:

这些配置信息还是在/Home/Conf/config.php文件里设置。

指定数据表前缀

指定标前缀,我们在第一课的配置项已经指定,以下的文字表示你可以灵活配置你的数据表。

如果数据库的表没有表前缀,使用空字符串代替

指定数据表,此处的指定的数据表的不需要添加表前缀:

举个例子说,比如说你的数据库中有一个没有表前缀的,名为users的数据表,可以用以下的两种方法在模型中进行下面的定义:

第一,直接根据系统的规范来命名模型类来命名模型,比如说就命名为UsersModel那么只需要在这个类里面加上下面的设置就可以了:

ThinkPHP系统就会自动定位到users表了。

第二种情况时,如果你的模型类没有按照系统规范来命名,比如说不小心命名为UserModel,这种情况下可以同时指定表前缀和表明,比如:

或者你直接指定trueTableName:

protected $trueTableName = 'users';

既然模型通常是用来操作数据表,那么我们来看看模型的基本CURD:

注:为了方便演示,我们在UserController中定义一个testDemo()方法用于演示

以下的代码将会一段一段在这个方法里演示,你可以通过访问 :

还有一种是理由auto()方法动态设置自动完成的机制,可以到官方文档去看看

设置完成之后,我们在testDemo()方法中创建一条用户数据:

测试,如果返回纪录的id值,说明用户纪录创建成功。要验证数据是否自动完成,你可以直接使用:

自动验证

自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create()创建数据对象的时候自动进行数据验证。

数据验证可以进行数据类型、业务规则、安全判断等方面的验证操作。

ThinkPHP模型详解(thinkphp 模型)

通常用于表单验证

数据验证有两种方式:

静态方式:在模型类里面通过$_validate属性定义验证规则。

动态方式:使用模型类的validate()方法动态创建自动验证规则。

无论是什么方式,验证规则的定义是统一的规则,定义格式为:

array( array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]), array(验证字段2,验证规则,错误提示,[验证条件,附加规则,验证时间]), ......);下面以$_validate静态方式举例如何使用自动验证:

在UserController中创建register()方法,对,几乎每一个Web应用都需要实现用户注册这一步。

对,就是这么简单,这个方法只是将相应的视图文件渲染出来。所以接下来我们创建对应的视图文件,也就是:./Application/Home/View/User/register.html

上面就是一些HTML代码和一点模板的知识,对于模板,我们后续会讲到,但不管怎样,现在我们访问 ( !$user->create($data) )会触发自动验证并判断验证是否通过验证。你可以尝试在表单里填写不同的数据来进行测试,也可以修改一下验证规则,更多规则可以到官网查看:

:ONE_TO_ONE,包括HAS_ONE 和 BELONGS_TO一对多关联 :ONE_TO_MANY,包括HAS_MANY 和 BELONGS_TO多对多关联 :MANY_TO_MANY

关联定义

ThinkPHP可以很轻松的完成数据表的关联CURD操作,目前支持的关联关系包括下面四种:HAS_ONE、BELONGS_TO、HAS_MANY和MANY_TO_MANY。一个模型根据业务模型的复杂程度可以同时定义多个关联,不受限制,所有的关联定义都统一在模型类的 $_link 成员变量里面定义,并且可以支持动态定义。要支持关联操作,模型类必须继承ThinkModelRelationModel类,关联定义的格式类似于:

关于关联属性的定义和值,你可以到官方文档仔细查看,我们下面也会给出一些最常用的。

在我们的讲解例子中,会采用HAS_MANY和BELONGS_TO来演示,对于其他的几个关系模型,可以参考官方文档举一反三。

首先我们知道数据库里面有两张表,用户表和文章表,并且我们也为其创建了不同的模型(UserModel ArticelModel)。

现在我们仔细来想想他们之间的对应关系:一个用户可以拥有多篇文章,而每一篇文章都属于某个特定的用户。所以我们可以分别为这两种关系添加关联模型:

在UserModel中:

在ArticleModel中:

以上者两种都是最简洁的模型关联声明。因为在最开始设计数据库的时候,我们遵守了ThinkPHP的官方的规范:

外键的默认规则是当前数据对象名称_id,例如:UserModel对应的可能是表think_user,那么think_user表的外键默认为user_id,如果你的外键不是user_id,而是其他自定义的字段如:user_identify,那么就必须在定义关联的时候定义 foreign_key 。如下:

在UserModel中:

更多自定义的关联模型参数可以到官网查看。

有了以上的定义之后,我们就可以在检索用户数据的同时将属于他的文章也一起检索出来,使用relation()。

同样是在testDemo()这个方法中:

访问熟悉的

php实现向javascript传递数组的方法 本文实例讲述了php实现向javascript传递数组的方法。分享给大家供大家参考。具体如下:这里介绍的PHP进行数组传值给javascript的技巧,此方法适用php5.2以

在Mac上编译安装PHP7的开发环境 今天看到鸟哥发微博说php7beta1测试版发布了,于是赶紧就去抢先下载,把自己的开发环境也升级到PHP7去,话不多少,下面就一起来搞起吧。。。首先你

详谈PHP编码转换问题 最近恰好要用到unicode编码的转换,就去查了一下php的库函数,居然没找到一个函数可以对字符串进行Unicode的编码和解码!也罢,找不到的话就自己实现

标签: thinkphp 模型

本文链接地址:https://www.jiuchutong.com/biancheng/275639.html 转载请保留说明!

上一篇:ThinkPHP控制器详解(thinkphp5控制器)

下一篇:php实现向javascript传递数组的方法(php使用js)

  • 未确认融资费用和长期应付款
  • 股东分红交税税率
  • 施工企业的临时设施,属于企业的固定资产
  • 所得税汇算申报完之后可以修改吗
  • 超率累进税率定义
  • 所得税的会计分录有哪些
  • 所得税残疾人工资加计扣除
  • 2021年超市发票税率是多少
  • 公司做账是做什么
  • 管道租赁合同怎么写
  • 增值税发票不见了可以重开吗
  • 技术研发费加计扣除政策
  • 取得的国债利息收入可以抵扣吗
  • 采购成本包括哪两种
  • 应交税费有余额怎么结转
  • 临时使用自建商品房是否需要缴纳房产税?
  • 垃圾清运工程师
  • 预收账款可以计入
  • cdr插件哪个最好用
  • 内存坏了电脑会黑屏吗
  • 预提费用新会计准则叫什么科目
  • 税控盘技术服务费可以抵税吗
  • 个体户升一般纳税人分红怎么交税
  • 期间费用在会计期末要转入
  • 企业为员工提供服务要交增值税吗
  • 工程结算需要哪些施工方案
  • 出口企业如何确认增值税收入
  • php中正则表达式
  • vue获取当前路由地址
  • 阳光穿透云层是什么效应
  • devtools安装mac
  • 申请退税怎么算
  • 大数据找工作好找吗
  • 通过点击office文件按钮可以选择设置系统选项
  • 帝国cms模板文件在哪
  • 固定资产报废清理怎么做账务处理的
  • js array()
  • 织梦产品详情页相关产品推荐调用代码
  • 织梦怎样实现文件上传
  • 非税收入票据可以跨年度使用吗
  • 小规模纳税人防水工程专用发票税率是多少
  • 物业公司物业费计入什么会计科目
  • 甲企业持有乙企业40%的股权,能够对乙企业
  • 疫情期间统筹部工作总结
  • 机械设备预付款比例
  • 科目汇总表借方和贷方相等吗
  • 进项税额转出结转还是红冲
  • 代理进口的增值税是多少
  • 分配股利有几种形式
  • 购买农副产品抵扣进项税的规定
  • 向其他公司投资专利账务处理
  • 出口汇率按报关价格算吗
  • 支付宝企业账户在哪里查看
  • 装修费用摊销是指什么
  • 计提工资与实发工资有差额怎么计算成本
  • 五证合一的办理流程是什么
  • 安装mysql失败原因
  • win7系统怎么关闭病毒防护
  • macos怎么使用
  • kvm虚拟化网络配置
  • ubuntu20.10
  • win10首个正式版发布日期
  • 虚拟网卡在哪里设置
  • win7系统怎么设置不休眠
  • LiteSpeed添加虚拟主机+支持htaccess图文教程
  • nwtray.exe - nwtray是什么进程 作用是什么
  • pavsrv51.exe - pavsrv51是什么进程 有什么用
  • jquery图片轮播无缝连接
  • jquery .form
  • unity3d游戏开发笔记本推荐
  • js使用正则表达式对json对象的校验
  • javascript高级教程pdf
  • 国土局和地税局的区别
  • 残疾人保障金税前扣除规定
  • 车辆购置税退税需要什么资料
  • 惠州市房产交易税费征收标准
  • 地税怎么交税
  • 新四板企业哪里可以查询
  • 百旺税控盘怎样清盘
  • 如何查询纳税人识别号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设