模型学习

在MVC里面,M是负责对数据的处理,其实在TP5里面模型封装的已经很好了,基本上我们不用做过多的操作,使用系统自带的基类即可完成大部分的curd操作。

 

 

模型定义

需要写在模块的model目录下,我们可以使用TP5自带的命令行工具进行生成。

注意1:在TP5里面模型也不在使用类后缀,直接就是使用去除表前缀后的名称作为模型的名称。(模型名称使用大驼峰的方式)

例如:表的名称为 sh_admin 对应的模型文件名称 Admin.php

例如:表的名称为 sh_goods_attribute 对应的模型文件名称 GoodsAttribute.php

 

>php think make:model app\index\model\User

 

T5的模型架构_静态方法

 

创建后

 

 

T5的模型架构_T5的模型架构_02

 

 

定义sh_user表

上面的模型和下面的sh_user是对应的

 

T5的模型架构_数据_03

 

基本操作-增加

完成数据的增加主要有如下几种方法

  1. 模型对象的save方法(先为对象设置属性)
  2. 模型类的create静态方法
  3. 模型对象的saveAll批量添加方法

 

 

实操:

1.模型对象的save方法(先为对象设置属性)

 

T5的模型架构_数据_04

 

2.模型类的create静态方法【简化操作】

 

T5的模型架构_静态方法_05

 

3.模型对象的saveAll批量添加方法【上面的两种操作,都只能完成单条数据的插入,如果批量插入数据,需要使用模型对象的saveAll方法】

 

 

T5的模型架构_数据_06

 

基本操作-查看

查询数据主要有如下几种方法

  1. 模型类的get静态方法【存在返回值为对象,否则为null】
  2. 通过字段查询getByFieldname()方法
  3. 根据条件查询get(['username' => 'root'])
  4. where方法查询->find()
  5. where方法查询->select()
  6. 模型类的all静态方法和select静态方法

 

实操:

1.模型类的get静态方法【存在返回值为对象,否则为null】,通过传递主键获取数据

 

T5的模型架构_数组_07

 

效果

 

T5的模型架构_静态方法_08

 

2.根据条件查询get(['username' => 'root'])

方式一:

 

T5的模型架构_数组_09

 

方式二:使用where方法传递(需要注意后面要通过find()方法调用一下)

 

T5的模型架构_数组_10

 

 

3.通过模型对象的字段查询getByFieldname('查询条件')方法

 

T5的模型架构_数组_11

 

 

  1. 模型类的where方法查询,然后调用find()方法

 

T5的模型架构_数据_12

 

 

5.where方法查询->select()

方式一:

 

T5的模型架构_静态方法_13

 

方式二:

 

T5的模型架构_数据_14

 

 

6.模型类的all静态方法和select静态方法

 

T5的模型架构_数据_15

 

注意:对应all和select方法返回的数据,是一个数组,数组中的每个元素是一个模型对象,如果我们需要把他们转换为普通的二维数组(数组中的元素也是数组)

 

T5的模型架构_数据_16

 

效果:

 

T5的模型架构_数据_17

 

 

便捷方式获取模型实例

在新版的Tp5里面可以有如下两种便捷方式获取模型实例:

方式一:使用model助手函数

 

T5的模型架构_T5的模型架构_18

 

 

方式二:使用TP5自带的Loader类的model静态方法

 

T5的模型架构_数据_19

 

 

总结:在新版的TP5里面,在原先TP3.2里面的单字母函数D已经不存在,取而代之的是model函数。

 

基本操作-更新

更新数据主要有如下几种方法

1.先 get(),后save()

2.模型类update静态方法

 

 

实操:

1.先调用模型类的get()静态方法,然后在调用模型对象的save()方法

 

T5的模型架构_静态方法_20

 

2.模型类update静态方法

方式一:

 

T5的模型架构_静态方法_21

 

方式二:

 

T5的模型架构_静态方法_22

 

 

基本操作-删除

删除数据主要有如下几种方法

1.先使用模型类的get()静态方法,然后在使用模型对象的delete()方法

2.模型类destroy静态方法

 

 

实操:

1. 先使用模型类的get()静态方法,然后在使用模型对象的delete()方法

 

T5的模型架构_数据_23

 

2.模型类destroy静态方法

 

T5的模型架构_数组_24

 

3.使用destroy同时删除多条数据

 

T5的模型架构_数据_25

 

4.模型对象的delete方法进行删除(需要传递删除条件)

 

T5的模型架构_静态方法_26