齐博x1第四季《模块插件的制作》系列23- 从数据库读取数据
之前建立过一个数据库,前面一直在说公共表单器的使用,下面我们开始说下,从数据库读取数据
这里分几种情况,一种我们作为简单开发,只需要修改一些简单的业务上的逻辑,就可以成为一个应用。
通常喜欢复制我们系统cms的模块来修改。那么一般这种很简单,直接使用公共代码即可。如下:
打开此文件application\common\controller\admin\C.php(参考index方法,和listall方法)
因为我们复制来的应用模块,通常都是通用的数据库结构,比如内容表,就是contents,content1......等
这种通用的数据库结构的模型,直接利用官方封装好的方法调用即可获取数据
分类数据:
所有数据:
所以此类数据库结构类似模型基本都是直接调用,因为本身继承了C的类。比较简单。
下面我们说说另一种情况,我们自己从零开发的模块,非继承公共C类的结构模型,如何读取数据库数据
比如我们前面章节建立的一个数据库qb_test_db
这里我们回顾下前面的代码,我们模拟了一个数组数据,(可参考前面章节)
我们现在直接从数据库里读取相类似的数据
第一种方法,我们直接在控制器里利用TP提供的相关方法读取
$data = Db::name('test_db')->select();
我们这里直接用Db::name来读取,具体使用方式请参考TP文档,这里不做详细说明,属于TP框架知识范畴
注意:需要在头部引用think\tb,否则报错
我们再看结果:
我们可以看到之前建立的公共列表页面已经读取了数据库的数据,此处不是模拟的数据了
对比数据库:
我们可以看到6条数据都读取出来了
第二种方法:在模型里读取
为什么要在模型里读取,因为我们本身是所属MVC架构,M模型里才是处理数据的地方,我们在C,控制器里处理数据是不规范的
各自分工,才能有好的健壮稳定性系统。
简单的应用如果偷懒不是那么严谨,或者学习研究,可以直接在控制器里读写数据,方便调式,真正应用还是养成良好的习惯。
我们之前建立数据库的时候引入了一个模型类,我们现在看下对应文件
打开 application\xyz\model\Test.php 如下:
只定义了一个属性,指明数据库表。我们现在定义一个方法 getDbList()
我们直接调用模型的all方法 可以获取所有数据,此处没有任何条件附加,只为演示,真正使用肯定要添加一些条件,否则效果极差
(各种模型方法,请参考TP框架文档,此处不做TP教学)
添加完成数据库方法后,我们返回控制器,需要调用此模型方法才可以读取数据到公共列表页
注意此处$this->model,我们需要实例化下,为了各个方法都可以使用,我们在初始化方法里,new一个实例
不实例化调用模型方法会报错
注意,实例化类,需要引入对应的模型类,否则报错;
引入模型类的时候,需要AS 一个别名,因为模型通常和控制类名是同名,否则会报已经使用的错误;
现在我们再看结果:
和上面的数据是一样的,都获取了全部的数据库数据.
来源: 神盾工作室 转载请注明出处!
查看更多评论