Yii2批量插入数据 [ 技术分享 ]
作者:PHP学习网 出处:https://www.viphper.com/?p=1254 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
直接看例子吧!
//要插入的表的名称 $tableName = Post::tableName();
//要插入的字段 $field = ['id','name'];
//要插入的数据(注:是一个二维数组) $insertData[] = [1,"PHP学习网"]; $insertData[] = [2,"PHP学习网"]; $insertData[] = [3,"PHP学习网"]; $insertData[] = [4,"PHP学习网"]; $insertData[] = [5,"PHP学习网"]; $insertData[] = [6,"PHP学习网"];
//执行,返回值为插入成功的数目 $totalnum = Yii::$app->db->createCommand()->batchInsert($tableName,$field,$insertData)->execute();
以上是没有经过数据合法效验的,若是需要效验请使用
$rows = []; foreach ($insertData as $model) { if (!$model->validate()) { // 处理无效数据 break; } $rows[] = $model->attributes; } $totalnum = Yii::$app->db->createCommand()->batchInsert($tableName,$field,$rows)->execute();
若是效验确实不需要,也可以使用,下面的方法简化效验 use yii\helpers\ArrayHelper; $rows = ArrayHelper::getColumn($insertData, 'attributes');
接下来执行 $post = new Post(); Yii::$app->db->createCommand()->batchInsert(Post::tableName(), $post->attributes(), $rows)->execute();
至于是哪种还需要开发过程中灵活使用,选择合适自己的。
共 0 条回复
飞飞
最后登录:2024-09-03
在线时长:32小时17分
- 粉丝7
- 金钱1935
- 威望10
- 积分2355