猫学乖 2016-05-24 11:30:25 10075次浏览 0条评论 2 0 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']

    没有找到数据。
您需要登录后才可以评论。登录 | 立即注册