第十四章:第17节thinkPHP框架——操作数据库(四)使用模型

更新于:2018-02-13 21:39:10

推荐大家使用模型操作数据库,在common模块建一个model目录:


1.png


在model目录中,我们数据库中有多少个数据表,就在此目录中对应建一个model文件。


目前有一个“php_user_info”表,默认文件内容先这样写:


1.png


详细说明:


为什么这样写呢?


遵循MVC设计模式,让程序保持良好的结构!其目的就是对每一个数据表做增删查改操作时,都有一个唯一的入口文件。举一个简单的好处:如果后期对程序做优化,需要修改数据表名称。如果程序中对此数据表的所有操作代码都用的模型对象,那就非常地好改(只需改动第7行代码)。如果程序用的全是数据库对象,那就要改很多地方。


在模型类中都需要写什么代码?


楠神建议尽量做到只写两种用途的代码:

①添加或更新当前表数据时,对数据做优化处理的代码

②增、删、改当前表数据时,验证是否可执行的代码。


除了上面两种用途的代码,尽量不要写其他涉及到业务逻辑的代码。尤其在A表的模型类中不要有对B表的增删改操作代码。


模型文件为什么写在common模块下?


在每个模块下都可以建“model”目录,但只能在本模块下可以调用,而common模块下的model文件所有模块都可以调用。楠神觉着一个数据表只对应一个模型类即可,不需要分模块单独建立。


模型类继承的父类


在官方的手册中,推荐要让模型类继承TP框架的Model抽象类,有关继承父类这块后面再做详细介绍。


如何获取模型对象?


使用model函数。


做个演示,(1)假设common模块和home下都有user模型文件。


1.png

1.png


1.png


1.png


可看出,model("User")最后实例化的是home模块下的User。


(2)把home模块下的User模型文件删除。


1.png

model("User")发现home模块下没有对应的模型文件,然后就去common模块下去找。


(3)再假如,home模块和common模块都没User模型文件,而admin模块下有User模型文件。


1.png


1.png


报错了,所以说除了公共模块common下的模型文件,其他模块可以调用。而其他模块下的模型文件是不可以相互调用的。


模型对象我们获取到了,模型对象同样可以使用数据库对象的那几个方法(select、insert、update、delete)操作数据库。


1.png


只是有所不同的是查询、更新返回结果是对象。


关于模型,后面还有很多介绍。


注意:


我们写程序时一定保持良好的习惯,注意大小写问题。在使用model函数填写model名称,要保持首字母大写。model名称其实就是一个类名称,我们都知道类首字母都是大写的。


当然model('user')也不出错,但是呢!model('user')与model('User')返回的实例对象不是同一个,也就是说程序同时用到了model('user')与model('User'),等于实例化了两次User模型对象,没有使用到单例模式。


本节学习代码》》》