ThinkPHP5开发连载四十三之模型-新增

上一篇文章讲解“模型定义+初始化”,本篇文章讲解“模型-新增”。

新增即想数据库中新插入一条数据。新增数据有多种方式。

1. 添加一条数据

1)第一种是实例化模型对象后赋值并保存。

Index控制器中新建add方法。

浏览器访问预览

数据库user表

2)使用data方法批量赋值

Index控制器,新建dataAdd方法

浏览器访问预览:

数据库

3)直接在实例化的时候传入数据

Index控制器,新建newAdd方法

浏览器访问预览:

数据库

4)过滤非数据表字段的数据

创建表单,模拟post提交进行测试。

Index控制器,新建allowAdd方法

新建allowadd.html文件(位置:application/index/view/index/)

浏览器访问

点击提交:

数据库

5)通过外部提交赋值给模型,并且希望指定某些字段写入

Index控制器,新建trueAdd方法

浏览器访问

点击提交,提交成功后,查看数据库。

数据库

注意:

1. save方法新增数据返回的是写入的记录数。

2. 获取自增ID

将数据插入数据库后,save方法返回的是插入的数据条数。有时需要使用当前插入数据的ID,因此需要获取自增ID。

1)添加一条数据,获取自增ID

浏览器访问预览:

数据库:

注意:

1. 这里其实是获取模型的主键,如果你的主键不是id,而是user_id的话,其实获取自增ID就变成这样: $user->user_id;

2)一个实例中多次添加数据,获取自增ID

Index控制器,新建more方法

浏览器访问预览

moreID方法中新增了两次数据,第一次新增成功,并输出自增ID,第二次提示“缺少更新条件”,说明第二次的save被当成更新,要解决此问题,需要添加一个连贯操作isUpdate。

修改moreID方法中的第二次新增

浏览器预览访问

数据库

注意:

1. 当一个实例中多次新增数据时,从第二次开始新增开始都要使用isUpdate操作,否则被视为更新。

3. 添加多条数据

ThinkPHP5中还支持批量添加数据。

1)批量新增

Index控制器,新建moreAdd方法

浏览器访问,数据库查看

2)带主键批量新增

saveAll方法新增数据默认会自动识别数据是需要新增还是更新操作,当数据中存在主键的时候会认为是更新操作,如果你需要带主键数据批量新增,可以使用下面的方式:

浏览器访问,数据库查看:

注意:

1. saveAll(数据 , 是否自动识别新增更新)

2. saveAll方法第二个参数为空时,代表自动识别新增和更新,识别方式为第一个参数数据是否带主键,有主键为更新,无主键为新增。

3. 当第二个参数设为false时,视为新增。

4. 静态方法

还可以直接静态调用create方法创建并写入:

Index控制器,新建createAdd方法。

浏览器访问

数据库

注意:

1. 和save方法不同的是,create方法返回的是当前模型的对象实例。

5. 助手函数

系统提供了model助手函数用于快速实例化模型,并且使用单例实现。

Index控制器,新建modelAdd方法。

浏览器访问

数据库

注意:

1. 以上测试都是在控制的方法中直接操作数据库的,说明控制器可以与数据库交互,但在实际项目中与数据库的交互程序都写在模型中。

2. 模型中的方法实现对数据库的操作,控制实例化模型,调用模型中的方法。

ThinkPHP5连载为卓象程序员原创,转载请联系卓象程序员

关注卓象程序员,定期发布技术文章

下一篇讲解“模型-更新”

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180908A0I86D00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券