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 条评论