Property [nama_barang] does not exist on this collection instance Laravel Query Builder

Jadi disini saya telah menggabungkan 2 tabel (barang_order_pelanggan & transaksi_pelanggan_pembayaran). Saya ingin jika data dari tabel barang_order_pelanggan itu dipanggil, maka otomatis data dari tabel transaksi_pelanggan_pembayaran juga terpanggil sesuai nama barang yg berada di tabel barang_order_pelanggan. Jika data di tabel barang_order_pelanggan terdapat hanya satu barang maka data dari tabel transaksi_pelanggan_pembayaran hanya mengeluarkan satu data saja meskipun terdapat lebih dari satu barang dan barang_order_pelanggan_id sama tetapi nama barangnya berbeda maka data yg dikeluarkan atau ditampilkan yaitu nama barang yg sama dg tabel barang_order_pelanggan.

Tetapi disini saya mengalami kesulitan dan menghasilkan error seperti ini "Property [nama_barang] does not exist on this collection instance", Bagaimana cara untuk memanggil dan mengeluarkan data berdasarkan nama barang yg telah disimpan di tabel barang_order_pelanggan?

kodingannya seperti ini... Mohon bantuannya...

$transaksi = DB::table('transaksi_pelanggan_pembayaran')->get();
$barang = DB::table('barang_order_pelanggan AS bop')
                    ->join('transaksi_pelanggan_pembayaran AS tpp', 'bop.id', '=', 'tpp.barang_order_pelanggan_id')
                    ->select(
                        'bop.nama_barang',
                        'bop.barang_tgl_dipesan',
                        'tpp.harga_akhir_barang',
                        'tpp.pembayaran',
                        'tpp.tgl_transaksi'
                      )
                    ->where('bop.nama_pelanggan', '=', $username)
                    ->where('tpp.nama_barang', '=', $transaksi->nama_barang)
                    ->get();
avatar sweetcorn123
@sweetcorn123

15 Kontribusi 2 Poin

Diperbarui 2 tahun yang lalu

1 Jawaban:

<div>Saya coba bantu jawab ya,&nbsp;<br>Pada baris ini :</div><pre>$transaksi = DB::table('transaksi_pelanggan_pembayaran')-&gt;get();</pre><div>Jika kamu gunakan method get(), maka data akan ditampilkan semua, otomatis data yang terpanggil akan menjadi collection (array), sehingga kamu tidak bisa memanggil langsung property-nya seperti ini :&nbsp;</div><pre>$transaksi-&gt;nama_barang; &lt;-- Error</pre><div>Kamu harus memanggil index (urutan) datanya, contohnya :&nbsp;</div><pre>$transaksi[0]-&gt;nama_barang; &lt;-- Property data dipanggil berdasarkan index-nya.</pre><div><br>Kecuali, jika kamu gunakan metode first() seperti ini :&nbsp;</div><pre>$transaksi = DB::table('transaksi_pelanggan_pembayaran')-&gt;first();</pre><div>Maka datanya bisa dipanggil dengan cara seperti ini :&nbsp;</div><pre>$transaksi-&gt;nama_barang</pre><div><br>Referensi :&nbsp;<a href="https://laravel.com/docs/8.x/queries#introduction">https://laravel.com/docs/8.x/queries#introduction</a><br><br>Kemudian, untuk kasus-nya sendiri saya sarankan agar kamu memanfaatkan eloquent ORM agar script yang ditulis lebih simpel.<br>Silahkan pelajari kelas ini <a href="https://sekolahkoding.com/kelas/sistem-relasi-eloquent-di-laravel">https://sekolahkoding.com/kelas/sistem-relasi-eloquent-di-laravel</a>&nbsp;<br><br></div><div>&nbsp;</div><div>&nbsp;</div><div>&nbsp;</div><div>&nbsp;</div>

avatar ahanafi
@ahanafi

815 Kontribusi 552 Poin

Dipost 2 tahun yang lalu

Login untuk ikut Jawaban