Yii2 批量插入

Posted

技术标签:

【中文标题】Yii2 批量插入【英文标题】:Yii2 Batch Insert 【发布时间】:2020-10-24 02:37:17 【问题描述】:

我想一次插入多列。我从 api 获取数据,我想一次插入数千行。我该怎么做?

我尝试了以下

 if(is_array($did))
                
                    $row=array();
                    foreach ($did as $di) 
                    
                    
                      $row[]=$di['src'];
                      $row[]=$di['dst'];
                      $row[]=$di['disposition'];
                      $row[]=$di['cost'];
                      $row[]=$di['date'];
                       
                    
                
                Yii::$app->db->createCommand()->batchInsert('call_records', ['source', 'destination','disposition','cost','date_added'], [$row])->execute();

但我猜它没有插入。第二个参数需要设置我无法做到的数组。

请告诉我可以做什么

谢谢

【问题讨论】:

【参考方案1】:

好像你有错误的行分配尝试使用这种方式

if (is_array($did)) 
     $row=array();
     foreach ($did as $di) 
        
          $row[]= [
            'source'        => $di['src'], 
            'destination'   => $di['dst'],
            'disposition'   => $di['disposition'],
            'cost'          => $di['cost'],
            'date_added'    => $di['date'],
          ];
                   
    


$columns = ['source', 'destination','disposition','cost','date_added'];

Yii::$app->db->createCommand()
    ->batchInsert('call_records', $columns, $row)
    ->execute();

【讨论】:

以上是关于Yii2 批量插入的主要内容,如果未能解决你的问题,请参考以下文章

Yii2中的Active Record可以批量插入数据吗

php Yii2批量插入助手。支持“忽略”和“重复密钥更新”策略

如何在Yii2中插入批量数据库?

Yii2如何批量添加数据

为啥批量插入/更新更快?批量更新如何工作?

批量插入数据