THINKPHP5第四章

首先我们在前面的几个章节中已经讲完了TP5中的控制层也就是Controller中的东西。其中有写方法你们只需要合理的使用。会为你节省一些时间少写一些代码的。今天我们主要讲解下我们的模型层。也就是Model层。所谓模型大家,对于有些刚接触的时候觉得这个东西很是模糊,当然,所以简单的解释下。大家应该知道数据库中的表,在被设计之初前,是有最初的ER图的,而我们对于这种ER图模型被称之为物理模型,所谓的物理模型的意思,大家可以理解为通过图形的方式反应了各表之间关联关系,通常在一些数据库管理工具中我们常常也能看到这个东西的存在,比如navicate工具,workbench工具(在他这个工具里面他把ER图叫做EER图,其实是同一个东西)。下面我们先看手册中的目录结构然后我们我们一个一个讲解。结构如下图所示:

首先我们来看如何定义一个模型,我们在app下面已经默认有了index文件夹,接着我们在index文件下面创建一个model文件夹,所有的模型文件皆放在这个文件下面。假设我们的数据库中存在一张表名字叫User,接着我们在model文件夹下面创一个一个User.php的文件夹,记住,首字母注意大小写。那么在我们编辑这个文件,在里面抬头行给上命名空间。命名空间的关键字是namespace来定义的,所以这样写,namespace  app\index(这里是模块名)\model。这里就应该是namespace app\index\Model; 接着我们需要创建自己的模型类,先定义我们的模型类名,记住这里的名字请跟外部的文件名保持一致。那么就应该是class User {}。接着我们知道,我们想要使用自己的模型,那么相当于我们需要继承原本的模型类,在这基础上重写或者改写,所以自己的创建的模型类需要继承原本的Model类。那么整个样子的结构就应该是如下图所示了。

如果按着上图所示的话,现在你就能够取到User表中的数据了。下面我们在控制层调用下模型并输出一下模型对象。

注意我们的表名不一定是大写的。或者可以使用model()助手函数来调用,model中的第一个参数也不区别大小写。若果存在一张表名字为user_type这种类型的表名,模型命名为驼峰命名法,像这样子的。UserType。下面我们讲使用模型如何新增内容

当使用模型时,第一种需要先实列化模型对象然后赋值,第二种是使用data方法批量赋值,第三种是直接在实例化的时候赋值,具体如下图所示:

这里的name和email是指的表中的字段名称,等号后面是赋予的值或者是内容。最有赋予完成后,使用save方法保存即可。这个时候就已经添加到数据库中了。

也可以直接实例化后,使用data方法赋值,data中默认是数组的键和值的结构,前面是字段名称,后面是值。最有再使用save方法保存即可。

所以直接在实例化模型的时候传入一个数据即可,所以这里实例化User有无括号的区别在这里,明白了吧。反正都挺方便,看你们个人喜好来吧。

如果你想要过滤数据的字段,可以使用allowFeild()方法。如下图

如果你想要获取新增的数据的ID,那么可以这样 echo $User->id; 这个id指的是模型主键字段名称,你叫user_id那么这里就是user_id(echo $User->user_id);因为save方法不能多次在实例中新增数据,所以添加多条数据你可以如下所示。

saveAll()方法会自动判断是更新还是增加。当$list中默认传入了存在主键的时候,他就会认为是更新操作。

下面查询的部分大家看看手册就能明白了其他的就不多说了,下面我们说说模型中的获取器。这个东西很好用,用途就比较广泛了。列如你在一表中定义了一个表示某个状态的字段,而你在把这个模型值传到视图层的时候不想再转换其中值的意思,那么获取器是你不错的选择。

记住这一切的操作都是在模型中定义的,而不是控制器中。如果你想要获取原本的数据,如下图所示

今天大概就讲到这里了,下次讲模型中的事件和关联。生活愉快。拜

猜你喜欢

转载自blog.csdn.net/qq_39338006/article/details/80308290