2016-10-08 71 views
0

我試過在網絡服務中獲取數據http://api.rajaongkir.com/dokumentasi/starter。而我在瀏覽器中成功展示數據。當我執行插入數據到數據庫有很多錯誤的東西。我不知道爲什麼。批量使用yii2中的Web服務將數據插入數據庫錯誤

此代碼用於在網絡服務中獲取數據http://api.rajaongkir.com/dokumentasi/starter。並放在控制器/ TestController.php

public function actionGetProvince($id=0) 
    { 
     $client = new client(); 
     $addUrl = ($id>0)?'id='.$id:''; 
     $response = $client->createRequest() 
        ->setFormat(Client::FORMAT_JSON) 
        ->setMethod('get') 
        ->setUrl('http://api.rajaongkir.com/starter/province?'.$addUrl) 
        ->addHeaders(['key' => 'example']) 
        ->send(); 
     if ($response->isOk) { 
      $content = \Yii\helpers\Json::decode($response->content); 
      //$content['rajaongkir']['query'] 
      //$content['rajaongkir']['status'] 
      $results = $content['rajaongkir']['results']; 
      if ($id > 0) { 
       if (count($results)>0) { 
        echo $results['province_id'] . ' - '; 
        echo $results['province'] . '<br>'; 
       } 
       else { 
        echo "blank"; 
       } 
      } else { 
       foreach ($results as $provinces) { 
        echo $provinces['province_id']." - ".$provinces['province']."<br>"; 
       } 
      } 
     } else { 
      $content = \Yii\helpers\Json::decode($response->content); 
      echo $content['rajaongkir']['status']['description']; 
     } 
    } 

而這個代碼插入數據與很多數據庫中,我把文件放在相同的。

Yii::$app->db->createCommand()->batchInsert('province', [ 
      'id_province' => $provinces['province_id'], 'name' => $provinces['province'] 
      ])->execute(); 

而結果錯誤是:

PHP的警告 - 警予\基地\ ErrorException:缺少論據3警予\ DB \命令:: batchInsert(),稱爲C:\ WAMP \ www \ basic_yii2 \ controllers \ TestController.php在第60行,並且定義爲

+0

嘗試與此有關。 Yii :: $ app-> db-> createCommand() - > batchInsert('province',['id_province','name'],[$ provinces ['province_id'],$ provinces ['province']]) - >執行(); –

回答

1

您沒有正確呼叫batchInsert()

請參閱documentation

public $this batchInsert ($table, $columns, $rows) 

$表string新的行會被插入到表。
$列array列名
$行array該行是批量插入到表

例子:

$connection->createCommand()->batchInsert('user', ['name', 'age'], [ 
    ['Tom', 30], 
    ['Jane', 20], 
    ['Linda', 25], 
])->execute();