文章讲解“模型定义+初始化”,本篇文章讲解“模型-新增”。
新增即想数据库中新插入一条数据。新增数据有多种方式。
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连载为卓象程序员原创,转载请联系卓象程序员