Yii2 como salvar dados JSON recebidos no banco de dados

Eu criei umAPI o que me retorna uma matriz de dados emjson

Array ( [0] => stdClass Object ( [MSN] => 002999001207 [PingDateTime] => 2018-05-04T16:33:27 [PingValue] => 22 ) [1] => stdClass Object ( [MSN] => 002999001195 [PingDateTime] => 2018-05-04T16:34:11 [PingValue] => 21 ) [2] => stdClass Object ( [MSN] => 002999001180 [PingDateTime] => 2018-05-04T14:42:40 [PingValue] => 20 ) [3] => stdClass Object ( [MSN] => 002999001157 [PingDateTime] => 2018-05-04T14:42:52 [PingValue] => 30 ) [4] => stdClass Object ( [MSN] => 002999001142 [PingDateTime] => 2018-05-04T16:37:19 [PingValue] => 13 ) [5] => stdClass Object ( [MSN] => 002999001138 [PingDateTime] => 2018-05-04T16:32:22 [PingValue] => 20 ) [6] => stdClass Object ( [MSN] => 002999001114 [PingDateTime] => 2018-05-04T16:32:52 [PingValue] => 22 )

Agora, estou tentando salvá-lo no meuDB

    $curl = curl_init($api_url);

    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, 1000);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array('Key'));

    $m->start_date_time = date('Y-m-d h:i:s');

    $curl_response = curl_exec($curl);
    $json = json_decode($curl_response);
    $record = $json->data;

    foreach ($record as $item){
        if($this->isSaved($item->MSN))
        {
            return false;
        }
        else if($this->ogpCreated($item->MSN))
        {
           $m->end_date_time = date('Y-m-d h:i:s');
           $m->meter_msn = $item->MSN;
           $m->meter_id = Meters::msnmapToid($m->meter_msn);
           $m->sub_div_code = Ogpdetail::msnTosubdiv($item->MSN);
           $m->sub_div_name = Ogpdetail::subDivToName($m->sub_div_code);
           $m->meter_ping_date_time = str_replace('T', ' ', $item->PingDateTime);
            $m->save();
        }
    }
    return $this->redirect(['index']);

No código acima, existem duas se as condições

isSaved ($ item-> MSN)

 $meter = MeterPing::find()->where(['meter_msn' => $msn])->one();

    if($meter)
        return true;
    return false;

A partir da função acima, estou tentando verificar se a entradaMSN já está salvo ou não. Se já estiver presente na tabela, ele não salvará esse particularMSN mas sim salve todos os outrosMSN que não são salvos anteriormente.

ogpCreated ($ item-> MSN)

 $meter = Ogpdetail::find()->where(['meter_serial' => $msn])->one();

    if($meter)
        return true;
    return false;

A partir da função acima, estou tentando verificar se a entradaMSN éOGP criado ou não. Novamente, não deve salvar nenhumMSN o que não éOGP criado.

Agora, quando eu tento executar issoCreate função, ele salva apenas um registro por vez.

Eu acho que há algum problema emif..... elseif isso permite salvar apenas uma entrada. Mas não tenho certeza disso.

Atualização 1

Tentei remover as verificações e salvar os dados recebidos, mas ainda assim, ele salva apenas um registro

Como posso salvar todo o conteúdo recebidoJSON dados no meuDB com todos os cheques funcionando?

questionAnswers(1)

yourAnswerToTheQuestion