1,同时使用两个save()方法
一个实例中,也就是一个类,有时候或许只调用了一个方法的时候,如果你用了两个save()方法,tp5.0框架默认是第一次使用save()方法是用于插入操作,第二次是更新操作,注意:一定是在同一个实例中。如果是第二次还是插入操作,则需要用isUpdate()这个方法。
代码如下:
$user = new User;
$user->name = 'thinkphp';
$user->email = 'thinkphp@qq.com';
$user->save();
$user->name = 'onethink';
$user->email = 'onethink@qq.com';
// 第二次开始必须使用下面的方式新增
$user->isUpdate(false)->save();
2.使用saveAll()的细节
saveAll() 方法新增数据默认会自动识别数据是需要新增还是更新操作,当数据中[存在主键]的时候会认为是更新操作,没有主键时会默认是插入操作。并且,saveAll()的批量更新必须要有主键,若无主键,则使用foreach加update()更新,用foreach加save()更新会失败,原因为以上第一条所述。
$user = new User;
$list = [
['id'=>1, 'name'=>'thinkphp', 'email'=>'thinkphp@qq.com'],
['id'=>2, 'name'=>'onethink', 'email'=>'onethink@qq.com'],
];
$user->saveAll($list, false);