批量使用yii2错误中的Web服务将数据插入数据库

时间:2016-10-08 06:54:22

标签: web-services activerecord yii yii2 dao

我已尝试在http://api.rajaongkir.com/dokumentasi/starter获取网络服务中的数据。我在视图浏览器中成功显示数据。当我实现插入数据与很多数据库的东西有什么不对。我不知道为什么。

此代码用于在http://api.rajaongkir.com/dokumentasi/starter的Web服务中获取数据。并放入controllers / 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警告 - yii \ base \ ErrorException:缺少yii \ db \ Command :: batchInsert()的参数3,在第60行的C:\ wamp \ www \ basic_yii2 \ controllers \ TestController.php中调用并定义

1 个答案:

答案 0 :(得分:1)

您没有正确调用batchInsert()

documentation中查看。

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

$ table string新行将插入的表格 $ columns array列名称
$ rows array要批量插入表格的行

示例:

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