官网给出的方法是
注意不要在同一个实例里面多次新增数据,如果确实需要多次新增,那么可以用下面的方式:
$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();
实测不行,
不过测试下面这种方式可行:
if ($this->request->isPost()) {
$data = $this->request->param();
$validate_result = $this->validate($data, 'Project');
if ($validate_result !== true) {
$this->error($validate_result);
} else {
if ($this->model_model->allowField(true)->save($data)) {
$pid = $this->model_model->id;
foreach ($data['pro_date'] as $k=>$v){
$v['pid'] = $pid;
$this->model_model_dates->data($v,true)->isUpdate(false)->allowField(true)->save();
$pdid = $this->model_model_dates->id;
foreach ($v['pro_times'] as $kk=>$vv){
$vv['pdid'] = $pdid;
$this->model_model_times->data($vv,true)->isUpdate(false)->allowField(true)->save();
}
}
$this->success('保存成功');
} else {
$this->error('保存失败');
}
}
}

博客围绕ThinkPHP5实例添加数据展开,官网给出的同一实例多次新增数据方法实测不可行,作者测试出一种可行方式,通过判断请求是否为POST,验证数据,再使用模型保存数据,若成功保存则处理关联数据。
515

被折叠的 条评论
为什么被折叠?



