TP5 模型

来源:互联网 发布:微信小视频制作软件 编辑:程序博客网 时间:2024/05/19 01:10

tp5的controller里面连接数据库表模型:

以下tablename都是不包含表前缀的部分,prefix-tablename包含表前缀的完整表名


1.利用助手函数db(),直接连接数据库操作

$res=db('tablename')->find(); //返回数组


注意:使用db助手函数默认每次都会重新连接数据库,如果想采用相同的链接,需要传入第三个参数

$ress=db('tablename',[],false)->find();

这样,$resshe $res 采用的就是同一个链接啦。第二个参数为数据库的连接参数,留空表示采用数据库配置文件的配置。


2.利用助手函数 model()

$res=model('tablename')->find(); //返回对象


2.1利用系统 Model类 需要应用相应的命名空间,还是用助手函数吧

use think\Model;


3.利用Loder类,需要应用相应的命名空间:

use think\Loader;


$res = Loader::model('tablename')->find(); //返回对象


4.利用Db类,需要应用相应的命名空间,直接连接数据库操作:

use think\Db;


Db::name('tableneme')->find(); //返回数组

Db::table('prefix-tableneme')->find(); //返回数组

如果没有用到表前缀,那么 Db::name() 和Db::table() 效果是一样的,有表前缀,那么table必须要写全名。


5.通过new tablename,需要应用模型对应的命名空间:


use app\mokuai\moxing\tablename;

$db= new tablename;

$db->find(); //返回对象



注意:通过Db类连接数据库操作 或者 助手函数db(),是链接数据库,用于在conroller中进行数据库操作,不能调用model里的方法。我觉得这种是面向过程编程的一个体现,所有的逻辑都在控制器中实现,不利于扩展和代码复用。但是效果很明显,不是很复杂的项目,可以面向过程快速完成,简单明了。

面向对象的编程,应该是在model里进行业务逻辑的处理,controller进行数据处理和流程控制(比如页面跳转,或者报错)。

以面向对象的思想去编程,在controller中就应该调用model提供的接口,根据返回值做判断以及相应的处理,因此,在model里就会涉及相应的数据查询等逻辑。

不知道我理解的对不对,如果有不对的地方,希望看到的人能留言指正,谢谢。




如果对你有帮助,请点个赞,谢谢。

熟读手册,才能得心应手。







原创粉丝点击