Yii2批量插入Tips [ 2.0 版本 ]
数据库批量插入:
使用 yii\db\Command 中的 batchInsert() 相关文档 在使用 ActiveRecord 时插入前要先做验证操作.
假设我们要插入 Post 类的 $models, 可以这样写:
$rows = [];
foreach ($models as $model) {
if (!$model->validate()) {
// At least one model has invalid data
break;
}
$rows[] = $model->attributes;
}
如果$models 的验证不是必须的, 则可以使用ArrayHelper 来简化 $rows 数组的创建.
use yii\helpers\ArrayHelper;
$rows = ArrayHelper::getColumn($models, 'attributes');
然后执行 batch insert
$postModel = new Post;
Yii::$app->db->createCommand()->batchInsert(Post::tableName(), $postModel->attributes(), $rows)->execute();
注意: $postModel 只是用来获取属性名称.
如果你不需要插入所有的属性, 你也可以自定义$rows 数组:
$rows[] = [
'title' => $model->title,
'content' => $model->content,
];
同时不要忘记修改 $postModel->attributes 为 ['title', 'content']
猫学乖
注册时间:2015-06-26
最后登录:2016-06-14
在线时长:9小时44分
最后登录:2016-06-14
在线时长:9小时44分
- 粉丝3
- 金钱223
- 威望20
- 积分513
共 0 条评论