Postingan lainnya
mysql data tidak tampil
Screenshot 2022-10-23 144422.jpgPermisi, jadi saya mau buat query join seperti gambar ini, cuman saya mau buatnya di codeigniter 4.0.3,
Sudah beberapa kali saya coba, namun kalau tabel pekerja di join 2 kali dia tidak muncul datanya, tetapi kalau hanya dipanggil sekali dia muncul.
Screenshot 2022-10-23 144652.jpgIni adalah codingan query di model.php yang saya buat dengan ci4.
image.pngIni adalah codingan di controller home.php
Jadi saya ingin menampilkan datanya di view, namun dengan join tabel pekerja 2 kali, tolong bantuannya terima kasih
1 Jawaban:
<div>Mungkin struktur databasenya dipikirkan lagi bro. Saya sudah koding sekian lama, tidak pernah mengalami kasus di mana saya harus left join 2 kali terhadap table yang sama. Mengapa montir dan kasir diletakkan ke dalam tabel yang sama (table pekerja) padahal peran dan pekerjaan mereka sangat berbeda, dan tidak ada overlap-nya? Daftar montir harusnya disimpan di table montir, dan daftar kasir disimpan di table kasir. Kode di atas tidak bisa bekerja, karena menurut Query Builder dari Codeigniter 4 pun memiliki pemikiran yang sama, harusnya tidak pernah ada kasus harus left join 2 kali terhadap table yang sama.<br><br>Solusi temporary yang bisa anda gunakan adalah, tidak menggunakan Query Builder. Database class milik Codeigniter 4 mengizinkan anda untuk menggunakan method yang bernama query(), yang fungsinya sama persis seperti di PHP native.<br><br>Ganti saja koding anda menjadi:</div><pre>return $this->db->query("SELECT ... FROM ... LEFT JOIN ...");</pre><div><br>Ditulis dengan sama persis seperti query yang anda ketikkan di PhpMyAdmin.<br>Bagian controller juga perlu diperbaiki. Mengapa ada echo view() lalu return view()??<br>Di dalam sebuah arsitektur MVC, setiap method di dalam controller seharusnya menghasilkan satu view saja.<br><br>Untuk menggunakan part tertentu secara berulang di beberapa halaman berbeda, coba baca lagi tentang <a href="https://codeigniter.com/user_guide/outgoing/view_layouts.html">View Layouts</a>.</div>