巩义网站制作专业品牌! 宇程网络-巩义企业网站专业服务商 加入收藏
巩义网站制作会员登录
注册
巩义市宇程网络有限公司巩义做网站,找宇程网络! 巩义网站设计热线 巩义网页设计在线咨询
技术交流
网站建设
服务器
网站安全维护
域名注册
虚拟主机
站长之家
网站推广
企业邮局
数据库
 
巩义做网站,找宇程网络!
巩义市宇程网络成立于二零零四年,是家专业提供巩义网站制作巩义网页设计巩义网页制作巩义网站设计巩义网站开发、域名注册、虚拟主机、企业邮箱等服务的正规巩义做网站的公司,迄今已累积客户逾千家,在业界具有相当的知名度,在巩义网站建设市场上树立了良好的口碑。
业精于专,值得您的信赖!
销售热线:13949060853
查看更多联系方式
PHP编程
Thinkphp5 数据保存、更新问题(save、saveAll)

今天写项目的时候,突然发现一个坑爹的问题,使用saveAll新增多条数据,但是一直提示缺少更新条件,然而我发现代码里面并没有更新,而且saveAll我仅仅是去新增多条数据而已

新增多条数据

我打印代码的每一步骤,发现都是正确的,但是到了saveAll新增数据的时候就会提示错误

报错提示

我也百度了一下,发现网上没有这种问题,最后我自己去看了tp5的源码,终于发现了问题

tp5源码

原来源码中有isUpdate这个属性的值,

这个值默认为false,但因为我自己在saveAll之前使用过save方法,而且是更新数据,

tp5 save方法

save方法会将isUpdate改为true,改完isUpdate的值,源码并没有再次改回来,这样isUpdate的值将一直是true,以至于我再使用saveAll的时候,提示缺少更新条件,而解决这个问题就是在saveAll前面加上isUpdate(false)

这样,我们就能解决这个问题!

虽然这个问题困扰了我一小会,但是我觉得却让我明白解决问题有时候需要从根本出发,多看看tp5的源码,只有真正的看懂明白了源码,才能写出更好的代码!

 

文章转载:https://www.jianshu.com/p/1848f61de648

 

 

 

TP手册--save新增数据  修改数据

一些特别需要注意的点:

save方法新增数据返回的是写入的记录数。
saveAll方法新增数据返回的是包含新增模型(带自增ID)的数据集(数组)。
批量更新仅能根据主键值进行更新,其它情况请使用foreach遍历更新。
如果传入update的数据包含主键的话,可以无需使用where方法。
如果你调用save方法进行多次数据写入的时候,需要注意,第二次save方法的时候必须使用isUpdate(false),否则会视为更新数据。(注意不要在一个模型实例里面做多次更新,会导致部分重复数据不再更新,正确的方式应该是先查询后更新或者使用模型类的update方法更新。)
save 自动补充更新,新增时间
模型的新增和更新方法都是save方法,系统有一套默认的规则来识别当前的数据需要更新还是新增。
实例化模型后调用save方法表示新增;
查询数据后调用save方法表示更新;
save方法传入更新条件后表示更新;
如果你的数据操作比较复杂,可以显式的指定当前调用save方法是新增操作还是更新操作。
$user = new User;
更新数据:
$user->isUpdate(true)->save(['id' => 1, 'name' => 'thinkphp']);
新增数据:
$user->isUpdate(false)->save([ 'name' => 'thinkphp']);

save 数据没有修改返回 0, 成功返回受影响行数,所以判断数据更新是成功

if($result !== false){        //成功

}else{                               //失败

}

 

转自:https://blog.csdn.net/zeng94731/article/details/80884043


  • 下一个技术中心: 没有了


  • 技术交流 网站模板上线
    Thinkphp5 数据保存、更新问题(save、…
    TP5.1隐藏public和index.php
    问题:textarea多行文本域中如何以换…
    tp5.1设置静态资源路径问题
    如何运用js将字符串中的反斜杠‘\’去…
    畅味园
    婚纱摄影公司网站
    婚庆服务公司网站
    婚庆公司网站
    婚庆公司网站
     

    巩义做网站1500元优惠专题 | 网站首页 | 公司简介 | 新闻动态 | 超值套餐 | 经典案例 | 技术支持 | 联系方式 | 虚拟主机
    Copyright @ 2004-2013 巩义宇程网络 www.5ctx.com All Rights Reserved. 豫ICP备09044223号
    联系电话:13949060853 (QQ:383298229)
    宇程网络: 巩义网站制作公司 | 巩义网页设计公司 | 巩义网页制作公司 | 巩义网站设计公司 | 巩义网站建设公司 | 巩义网站开发公司 | 巩义做网站的公司