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.

avatar Supriono
@Supriono

84 Kontribusi 16 Poin

Dipost 5 tahun yang lalu

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:

Alhamdulillah solved

avatar Supriono
@Supriono

84 Kontribusi 16 Poin

Dipost 5 tahun yang lalu

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-&gt;data-&gt;dataPembayaran as $isi){ $data = new Payments(); $data-&gt;user_id = Auth::user()-&gt;id; $data-&gt;produk = $produk[$x]; $data-&gt;date_time = $response-&gt;date_time; $data-&gt;trxID = $response-&gt;trxID; $data-&gt;idno = $response-&gt;idno; $data-&gt;reffNo = $isi-&gt;reffNo; //LINE 94 $data-&gt;rc = $response-&gt;rc; $data-&gt;namaPelanggan = $response-&gt;namaPelanggan; $data-&gt;tarif = $response-&gt;tarif; $data-&gt;daya = $response-&gt;daya; $data-&gt;tglTransaksi = $response-&gt;tglTransaksi; $data-&gt;tglBayar = $response-&gt;tglBayar; $data-&gt;blth = $isi-&gt;blth; $data-&gt;meterAwal = $isi-&gt;meterAwal; $data-&gt;meterAkhir = $isi-&gt;meterAkhir; $data-&gt;rpTag = $isi-&gt;rpTag; $data-&gt;rpBK = $isi-&gt;rpBK; $data-&gt;admBank = $admbank[$x]; $data-&gt;jmlTagihan = $totaltagihan; $data-&gt;save(); } </pre>

avatar Supriono
@Supriono

84 Kontribusi 16 Poin

Dipost 5 tahun yang lalu

Login untuk ikut Jawaban