竹笋

首页 » 问答 » 灌水 » ThinkPHP5开发连载43thi
TUhjnbcbe - 2023/1/9 21:21:00

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

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

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连载为卓象程序员原创,转载请联系卓象程序员

1
查看完整版本: ThinkPHP5开发连载43thi