Relationship pada Laravel | Many to Many

Asslalamualaikum, wr. wb. semoga damai selalu menyertai kita semua.

sebelum anda membaca artikel ini pastikan anda sudah membaca artikel berikut :

Relationship pada Laravel | One to One

Relationship pada Laravel | One to Many

Many to Many

Relasi many to many merupakan relasi yang menggambarkan hubungan dua buah table yang dapat memiliki hubungan lebih dari satu baik dari table pertama ke table kedua maupun sebaliknya. Misalnya sebuah post dapat memiliki lebih dari satu kategori dan sebuah kategori dapata digunakan oleh banyak post. untuk lebih jelas simak ERD berikut :

many-to-many-1

Dalam ERD tersebut digambarkan bahwa table posts dan categories memiliki relasi many to many. Namun dalam implementasinya, relasi many to many tidak dapat berjalan hanya dengan dua table tersebut. Kita harus menambahkan sebuah table baru sebagai penguhubung keduanya. Table baru ini biasanya disebut sebagai transaction table. Jika kita tambahkan table transaction maka ERD yang akan terbentuk sebagai berikut :

many-to-many-2

Dalam laravel sendiri, penamaan table transaction ini mempunyai aturan khusus dimana penamaan table transaction harus alphabetical (A->Z). Jadi dalam kasus kita, kita memberikan penamaan pada table transaction dengan nama category_post karena kita menghubungkan table posts dan categories dimana categories lebih dahulu karena mempunyai abjad awalan C daripada post yang memiliki abjad awalan P.

Note :

Laravel memiliki aturan penamaan plurar (jamak) untuk nama table utama dan singular (tunggal) untuk table transaction atau nama model. Kita dapat menggunakan helper bawaan laravel yaitu str_plural() dan str_singular() jika kesulitan mencari nama plural atau singular.

sudah ada gambaran? okesip mari lanjut ke implementasi

Persiapan Model dan Migration

karena pada postingan sebelumnya kita telah memiliki data users, maka kita hanya perlu membuat model dan migration untuk post.

lalu kita masukkan field yang ada pada erd ke migration yang baru dibuat

migration categories

migration category_post

lalu jalankan migration

setelah itu cek dan pastikan database sudah terisi dengan table tersebut.

Konfigurasi Model

Setelah table terbentuk, langkah selanjutnya adalah kita akan melakukan konfigurasi pada model yang kita buat.

tambahkan sintaks berikut pada app/Post.php

dan sintaks berikut pada app/Category.php

Pengisian data

langkah selanjutnya adalah kita akan coba membuat data dummy dengan seeder. mari kita buat seederbernama OneToOneSeeder

isi sebagai berikut :

seperti yang bisa dilihat pada sintaks diatas, kita cukup menggunakan method attach() untuk menambahkan category kedalam sebuah post. Selain itu kita juga dapat menggunakan method detach() untuk menghapus category tertentu dari post, dan sync() untuk mengupdate category dalam post. Mudah bukan? inilah salah satu keunggulan laravel hehe

lalu tambahkan sintaks di file seeds/DatabaseSeeder.php

lalu jalankan perintah

lalu jalankan perintah

pastikan data sudah masuk kedalam database

Pemanggilan data

untuk pengaksesan data, disini kita akan menggunakan laravel tinker

lalu coba kita panggil category yang digunakan oleh post2

ez kan? hehe

lalu kita coba hilangkan category php dari post2

done! kategori sudah hilang. Lalu bagaimana kalau kita mau update? cekidot

Selesai update hehe.. Kalau kita perhatikan method sync ini akan secara otomatis membandingkan lalu menambahkan category yang belum ada, lalu setelah itu akan menghapus category yang tidak digunakan, jadi kita tidak perlu lagi capek2 menghapus dan membuat secara manual.

sekian pembahasan RelationshipOne to Many pada Laravel ini. cheers and have a nice code 😀

Widi Hastomo

Hai, Nama saya Widi Hastomo. Saya adalah seorang software enginer yang punya passion di bidang web development. Saya sudah berada di dunia web development sejak tahun 2014 dan saat ini berdomisili di semarang, Jawa Tengah.

Relationship pada Laravel | Many to Many