thinkphp同一个实例使用模型save方法添加数据报错处理方法

在一个model实例中 使用save() 添加多条数据,报错

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '86' for key 'PRIMARY
意思是说是主键重复

然后查看TP5手册,提示:

注意不要在同一个实例里面多次新增数据,如果确实需要多次新增,那么可以用下面的方式:

$user           = new User;
$user->name     = 'thinkphp';
$user->email    = '[email protected]';
$user->save();
$user->name     = 'onethink';
$user->email    = '[email protected]';
// 第二次开始必须使用下面的方式新增
$user->isUpdate(false)->save();


然而不行

  • 如果你自己通过遍历批量新增数据,可以参考下面的方法:
     
$user = new User;
$list = [
   ['name'=>'thinkphp','email'=>'[email protected]'],
   ['name'=>'onethink','email'=>'[email protected]']
];
foreach($list as $data){
   $user->data($data,true)->isUpdate(false)->save();
}
  • 如果是手动新增多条数据,参考下面:
$this->model->type = 21;
$this->model->content = json_encode($arr['data']);
$this->model->isUpdate(false)->save();
// 下面需要清空上一步保留的自增主键的值
$this->model->data('id', null);
$this->model->type = 22;
$this->model->content = json_encode($arrToady['data']);
$this->model->isUpdate(false)->save();

猜你喜欢

转载自blog.csdn.net/toooooop8/article/details/135422980