Postingan lainnya
Insert data xml to database pada laravel
Sore, saya mempunyai respon data xml seperti berikut :
<resp_postpaidpayment>
<date_time>20191105005009</date_time>
<trxID>1572889809444</trxID>
<idno>211001828100</idno>
<rc>00</rc>
<namaPelanggan>UDIN</namaPelanggan>
<tarif> S1</tarif>
<daya>1300</daya>
<tglTransaksi>05/11/2019</tglTransaksi>
<tglBayar>05/11/2019 00:50:06</tglBayar>
<tilp></tilp>
<data>
<dataPembayaran>
<blth>MEI16</blth>
<meterAwal>00000000</meterAwal>
<meterAkhir>00000000</meterAkhir>
<rpTag>000000120000</rpTag>
<rpBK>000000010000</rpBK>
<admBank>000000003000</admBank>
<jmlTagihan>133000</jmlTagihan>
<reffNo>0213170Z83E7D162FA135</reffNo>
<sisaTagihan>1</sisaTagihan>
</dataPembayaran>
<dataPembayaran>
<blth>JUN16</blth>
<meterAwal>00000000</meterAwal>
<meterAkhir>00000000</meterAkhir>
<rpTag>000000430000</rpTag>
<rpBK>000000010000</rpBK>
<admBank>000000003000</admBank>
<jmlTagihan>443000</jmlTagihan>
<reffNo>0213170Z83E7D162FA13580B178CF459</reffNo>
<sisaTagihan>0</sisaTagihan>
</dataPembayaran>
<pesanSponsor>Rincian Tag. Dapat Di Cek Langsung saja ke "Web" www.pln.co.id. Atau Chat wa 123</pesanSponsor>
</data>
</resp_postpaidpayment>
Xml tersebut ingin saya simpan ke database menjadi dua data berdasarkan <dataPembayaran>. Berikut kode yang saya tulis :
......(query sebelumnya)......
$inqMsgRespons = //TERIMA DATA XML
$response = simplexml_load_string($inqMsgRespons);
foreach($response->data as $isi){
for($i = 0; $i < count($isi); $i++){
$data = new Transactions();
$data->user_id = Auth::user()->id;
$data->produk = $request->produk;
$data->date_time = $response->date_time;
$data->trxID = $response->trxID;
$data->idno = $response->idno;
$data->reffNo = $isi->dataPembayaran[$i]->reffNo; //LINE 94
$data->rc = $response->rc;
$data->namaPelanggan = $response->namaPelanggan;
$data->tarif = $response->tarif;
$data->daya = $response->daya;
$data->blth = $isi->dataPembayaran[$i]->blth;
$data->jmlBulan = 2;
$data->meterAwal = $isi->dataPembayaran[$i]->meterAwal;
$data->meterAkhir = $isi->dataPembayaran[$i]->meterAkhir;
$data->rpTag = $isi->dataPembayaran[$i]->rpTag;
$data->rpBK = $isi->dataPembayaran[$i]->rpBK;
$data->admBank = $request->admBank;
$data->jmlTagihan = $isi->dataPembayaran[$i]->jmlTagihan;
$data->save();
}
}
return redirect('/');
Kode tersebut BERHASIL menyimpan dua data berdasarkan <dataPembayaran> kedalam database, tetapi menampilkn eror berikut :
(1/1) ErrorException
Trying to get property 'reffNo' of non-object
in TransactionController.php line 94
at HandleExceptions->handleError(8, 'Trying to get property \'reffNo\' of non-object', 'C:\\xampp\\htdocs\\SMBAYAR\\app\\Http\\Controllers\\TransactionController.php', 94, array('request' => object(Request), 'q' => 0, 'inqMsgRespons' => '<resp_postpaidpayment><date_time>20191105005009</date_time><trxID>1572889809444</trxID><idno>211001828100</idno><rc>00</rc><namaPelanggan>UDIN</namaPelanggan><tarif> S1</tarif><daya>1300</daya><tglTransaksi>05/11/2019</tglTransaksi><tglBayar>05/11/2019 00:50:06</tglBayar><tilp></tilp><data> <dataPembayaran> <blth>MEI16</blth> <meterAwal>00000000</meterAwal> <meterAkhir>00000000</meterAkhir> <rpTag>000000120000</rpTag> <rpBK>000000010000</rpBK> <admBank>000000003000</admBank> <jmlTagihan>133000</jmlTagihan> <reffNo>0213170Z83E7D162FA13580B178CF459</reffNo> <sisaTagihan>1</sisaTagihan> </dataPembayaran> <dataPembayaran> <blth>JUN16</blth> <meterAwal>00000000</meterAwal> <meterAkhir>00000000</meterAkhir> <rpTag>000000430000</rpTag> <rpBK>000000010000</rpBK> <admBank>000000003000</admBank> <jmlTagihan>443000</jmlTagihan> <reffNo>0213170Z83E7D162FA13580B178CF459</reffNo> <sisaTagihan>0</sisaTagihan> </dataPembayaran> <pesanSponsor>Rincian Tag. Dapat Di Cek Langsung saja ke "Web" www.pln.co.id. Atau Chat wa 123</pesanSponsor></data></resp_postpaidpayment>', 'response' => object(SimpleXMLElement), 'isi' => object(SimpleXMLElement), 'i' => 2, 'data' => object(Transactions)))in TransactionController.php line 94
at TransactionController->request_pln(object(Request))
at call_user_func_array(array(object(TransactionController), 'request_pln'), array(object(Request)))in Controller.php line 55
at Controller->callAction('request_pln', array(object(Request)))in ControllerDispatcher.php line 44
Eror di controller line 94, padahal menurut saya tidak ada yang salah disana.
Tanggapan
Kenapa yang di foreach data ? kan datanya cuma satu, yang banyak itu dataPembayaran. Jadi kalau langsung, tidak perlu pakai for lagi di dalamnya. Oiya coba di isset saja takutnya paramnya gak ada.
thx mas devio, iya yah.. kenapa yang di foreach data.. hahaha. SOLVED Mas terimakasih banyak.
2 Jawaban:
Tanggapan
halo di kolom jawaban, tulis jawaban dari masalahnya ya, dan ditandai sebagai jawaban benar, agar orang berikutnya bisa mengacu ke sini
siap boskuh
Jawaban Terpilih
<pre> foreach($response->data->dataPembayaran as $isi){ $data = new Payments(); $data->user_id = Auth::user()->id; $data->produk = $produk[$x]; $data->date_time = $response->date_time; $data->trxID = $response->trxID; $data->idno = $response->idno; $data->reffNo = $isi->reffNo; //LINE 94 $data->rc = $response->rc; $data->namaPelanggan = $response->namaPelanggan; $data->tarif = $response->tarif; $data->daya = $response->daya; $data->tglTransaksi = $response->tglTransaksi; $data->tglBayar = $response->tglBayar; $data->blth = $isi->blth; $data->meterAwal = $isi->meterAwal; $data->meterAkhir = $isi->meterAkhir; $data->rpTag = $isi->rpTag; $data->rpBK = $isi->rpBK; $data->admBank = $admbank[$x]; $data->jmlTagihan = $totaltagihan; $data->save(); } </pre>