Yii2 Tips 1 : Menampilkan Relasi Many-to-Many Tiga Tabel

Kali ini saya akan berbagi tips untuk menampilkan hasil dari relasi many-to-many antara tiga tabel. Contoh relasi many-to-many yaitu antara Book dan Author. Buku bisa ditulis oleh lebih dari satu Pengarang, dan Pengarang bisa menulis lebih dari satu Buku. Sehingga kita akan membuat tiga tabel : book, author, dan tabel Relasinya : book_author.

1. Buat tabel book, author, dan book_author dan isi dengan data dummy masing-masing :

Tips-Yii2-relasi-many-to-many-tiga-tabel-book

Yii2-Tips-Menampilkan-Relasi-Many-to-Many-Tiga-Tabel-Buku-Dummy

Yii2-Tips-Menampilkan-Relasi-Many-to-Many-Tiga-Tabel-author

Yii2-Tips-Menampilkan-Relasi-Many-to-Many-Tiga-Tabel-AuthorDummy

Yii2-Tips-Menampilkan-Relasi-Many-to-Many-Tiga-Tabel-author

Data dummy untuk book_author : Buku Satu ditulis oleh Pengarang Satu dan Pengarang Dua, Buku Dua ditulis oleh Pengarang Satu dan Pengarang Empat, Buku Tiga ditulis oleh Pengarang Satu, Pengarang Dua, dan Pengarang Tiga.

Yii2-Tips-Nomor-1-Menampilkan-Relasi-Many-to-Many-Tiga-Tabel-bookauthorDummy

2. Buat Model Book, Author, dan BookAuthor di folder common.

3. Kita akan coba tampilkan di  frontend. Buat public actionRelationview di SiteController.php /frontend/controllers.

Buat file relationview.php di frontend/views/site/

4. Kita akan menampilkan Buku apa saja yang ditulis oleh Pengarang Satu.

Pertama-tama, hubungkan model Book dengan model BookAuthor dengan cara modifikasi model Book ( dengan menambahkan relasi hasMany yang berarti buku ditulis oleh banyak penulis :

Setelah itu, kita akan menghubungkan Model BookAuthor dengan model Author supaya bisa menampilkan nama Pengarangnya, dengan relasi HasOne. Tambahkan di Model BookAuthor.php :

5. Kita tuliskan kode berikut di relationview.php yang tadi sudah kita buat :

Penjelasan : Jika model Buku kita dengan id tertentu memiliki author, maka tampilkan setiap author yang menulis buku tersebut.

Untuk mengaksesnya kita perlu menyertakan parameter id :

Coba sobat ganti-ganti id nya, maka akan menyesuaikan :

Yii2-Tips-Nomor-1-Menampilkan-Relasi-Many-to-Many-Tiga-Tabel-BUku-Satu

Yii2-Tips-Nomor-1-Menampilkan-Relasi-Many-to-Many-Tiga-Tabel-Buku-Tiga

 

 

Happy Coding!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.