think PHP 数据库保存(新增、修改)save saveALL

最近同事问到  save 的数据保存问题,作为自己的一个巩固,做此纪录。

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

一些特别需要注意的点:

  1. save方法新增数据返回的是写入的记录数。
  2. saveAll方法新增数据返回的是包含新增模型(带自增ID)的数据集(数组)。
  3. 批量更新仅能根据主键值进行更新,其它情况请使用foreach遍历更新。
  4. 如果传入update的数据包含主键的话,可以无需使用where方法。
  5. 如果你调用save方法进行多次数据写入的时候,需要注意,第二次save方法的时候必须使用isUpdate(false),否则会视为更新数据。(注意不要在一个模型实例里面做多次更新,会导致部分重复数据不再更新,正确的方式应该是先查询后更新或者使用模型类的update方法更新。)
  6. 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{                               //失败

}




你可能感兴趣的:(php,think,PHP,save,saveALL)