如何用model插入二条数据? [ 2.0 版本 ]
如题:如何用model插入二条数据? 我发现如果不new 二次model 是做不到的。这是orm的特性?
今天项目中,$this->save() 在一次操作中调用了四次。但发现不管如何,都只有一条入库。
最佳答案
-
第一种方法
php $model = new User(); foreach($data as $attributes) { $_model = clone $model; $_model->setAttributes($attributes); $_model->save(); }
第二种方法
php $model = new User(); foreach($data as $attributes) { $model->isNewRecord = true; $model->setAttributes($attributes); $model->save() && $model->id=0; }
共 1 条回复
其他 3 个回答
-
KillMeAgain 回答于 2017-01-06 21:36 举报
这是orm的特性
-
同意楼上,也可以两条数据拼成一条sql语句,然后执行
类似于如下:foreach($res[0] as $value){ $row = explode('|', $value); if($row[0] != '' && isset($row[1])){ $values .= '("'.trim($row['0']).'","'.trim($row['1']).'"),'; } } $sql = "insert into tbl_index(title,link) values".substr($values,0,-1).';';
共 5 条回复@474352380 ,贴出来代码看看
public function getAdd() { $this->a(); $this->b(); $this->c(); $this->d(); }
简单的来说,每一个方法,都是一个插入操作。$this->sve();但是只有d()能入库。
以下是我解决方法:
注:因为我在入库前,做了时间判断,所以好使。for ($i = 0; $i <= 3; $i++) { $model->add; }
代码意义不大。
@474352380 我认为你这里可以分别dump一下四个$this
@jackiegao 就是四个一样的object 有问题?
-
建议批量插入好点,如:
//假如 $names = ['zhangsan', 'lisi']; $data = []; foreach ($names $k => $v) { $data[] = [$v]; } Yii::$app->db->createCommand()->batchInsert('test', ['name'], $data)->execute();
qqa4560354 觉得很赞
最爱红烧肉
注册时间:2014-11-07
最后登录:2017-10-27
在线时长:69小时2分
最后登录:2017-10-27
在线时长:69小时2分
- 粉丝11
- 金钱4740
- 威望30
- 积分5730