Postingan lainnya
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();
1 Jawaban:
<div>Saya coba bantu jawab ya, <br>Pada baris ini :</div><pre>$transaksi = DB::table('transaksi_pelanggan_pembayaran')->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 : </div><pre>$transaksi->nama_barang; <-- Error</pre><div>Kamu harus memanggil index (urutan) datanya, contohnya : </div><pre>$transaksi[0]->nama_barang; <-- Property data dipanggil berdasarkan index-nya.</pre><div><br>Kecuali, jika kamu gunakan metode first() seperti ini : </div><pre>$transaksi = DB::table('transaksi_pelanggan_pembayaran')->first();</pre><div>Maka datanya bisa dipanggil dengan cara seperti ini : </div><pre>$transaksi->nama_barang</pre><div><br>Referensi : <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> <br><br></div><div> </div><div> </div><div> </div><div> </div>