Tutorial Laravel #25 : Relasi Many To Many Eloquent


Relasi Many To Many Eloquent – Setelah sebelumnya kita belajar tentang relasi one to one eloquent dan relasi one to many pada eloquent, Pada tutorial ini kita akan belajar tentang relasi many to many.

Relasi Many To Many Eloquent

Relasi Many To Many adalah relasi antar table dimana banyak dari masing-masing record tersebut bisa memiliki banyak relasi ke table lainnya.

Penjelasan

Untuk tutorial relasi many to many, kita buat contoh dengan misalnya membuat sistem pendataan hadiah untuk pengguna. jadi misalnya kita bisa membuat pendataan untuk masing-masing anggota memiliki/mendapat hadiah apa saja. dan nanti kita bisa melihat untuk hadiah A, siapa saja pengguna yang mendapatkannya.

Untuk proses relasi many to many seperti ini ada 3 table yang kita butuhkan, katakanlah kita membutuhkan:

  • table anggota
  • table hadiah
  • table anggota_hadiah

Table anggota kita gunakan untuk menyimpan data-data anggota, table hadiah untuk menyimpan data-data hadiah.

dan pasti teman-teman bertanya untuk apa kita membuat table anggota_hadiah ? untuk apa gunanya? dan kenapa harus diberi nama dengan anggota_hadiah? kenapa bukan hadiah_anggota atau yang lainnya?

Karena kita akan menghubungkan table anggota dan table hadiah. dan yang menjadi penghubungnya adalah table anggota_hadiah.

di sini table anggota_hadiah juga disebut sebagai pivot table. yaitu table yang menjadi penghubung beberapa table dalam proses relasi many to many.

untuk penamaannya kenapa kita namakan dengan table anggota_hadiah ? kenapa bukan hadiah_anggota?

karena laravel menerapkan sistem pengurutan alfabet. jadi laravel akan secara otomatis nama table tersebut adalah anggota_hadiah. karena huruf yang diurutkan adalah huruf pertama dari tiap kata. karena huruf A lebih dulu dari pada huruf H, maka jadinya anggota_hadiah.

Selanjutnya didalam table anggota_hadiah kita akan menyimpan id dari anggota dan id dari hadiah. dan kita beri nama masing-masing kolum nya dengan anggota_id dan hadiah_id.

Oke teman-teman saya rasa teman-teman sudah paham tentang penamaan table ini.

Persiapan

Pada tahap ini kita akan membuat table anggota, table hadiah, dan table anggota_hadiah.

table anggota

  • id
  • nama

table hadiah

  • id
  • nama_hadiah

table anggota_hadiah

  • id
  • anggota_id
  • hadiah_id

Buat ketiga table tersebut lengkap dengan kolumnya seperti yang ada pada list di atas.

Teman-teman bisa membuat table ini seperti cara sebelumnya yang sudah kita pelajari, yaitu menggunakan model dan migration. kemudian diikuti dengan menginput data dummy menggunakan Faker.

Teman-teman bisa mengimport query sql berikut jika ingin cepat. di sini saya sudah membuat ketiga table diatas dan sudah saya isi dengan data dummy menggunakan Seeding Faker.

SQL

jangan lupa mengatur koneksi database laravel pada file .env.

Sampai di sini kita telah mempunyai 3 buah table.

relasi many to many eloquent

relasi many to many eloquent

Perhatikan pada gambar di atas,

pada table anggota_hadiah kita hubungkan antara kedua buah table lainnya. pada table anggota_hadiah kita hanya menyimpan data id anggota dan id hadiah. misalnya data yang pertama ada ratih wijayanti (id 6) memilik hadiah pulpen (id 6) dan seterusnya. jadi ingat, hanya id nya saja yang kita simpan.

Model

Pastikan kita telah memiliki model untuk anggota dan hadiah. jika belum silahkan teman-teman buat dulu kedua model tersebut.

php artisan make:model Anggota

dan

php artisan make:model Hadiah

Pada model Anggota.php, hubungkan dengan model/table hadiah.

belajar_laravel/app/Anggota.php

Perhatikan pada model Anggota.php di atas, kita membuat method hadiah() untuk menghubungkan model anggota dangan model hadiah.

Disini kita menggunakan fungsi belongsToMany() karena kita akan menbuat relasi many to many, pada model hadiah juga kita akan gunakan fungsi belongsToMany().

belajar_laravel/app/Hadiah.php

Oke tahap model selesai, kita lanjut dengan langsung membuat route.

Route

Langsung saja persiapkan route untuk menampilkan data anggota dan hadiahnya. disini saya membuat route baru yaitu:

belajar_laravel/routes/web.php

Pada route ini kita akan menggunakan controller DikiController.php.

jadi buat sebuah controller baru, di sini saya membuat controllernya dengan menggunakan php artisan.

php artisan make:controller DikiController

Kemudian pada controller DikiController.php buat method index().

belajar_laravel/app/Http/controllers/DikiController.php

Perhatikan pada controller di atas, kita panggil dulu model yang kita perlukan.

kemudian method index() nya kita ambil data anggota dari database dan kita passing ke view anggota.blade.php

Buat view nya.

belajar_laravel/resources/views/anggota.blade.php

Nah, pada view langsung kita tampilkan datanya. seperti yang teman-teman lihat, karena model anggota sudah terhubung dengan model hadiah (many to many), sekarang kita bisa langsung mengakses data hadiah masih-masing anggota di dalam variabel $anggota yang kita passing dari controller.

$a->hadiah berisi data hadiah untuk masing-masing anggota. tergantung yang kita hubungkan pada table anggota_hadiah sebelumnya.

Kita lihat hasilnya ya.

Jalankan project.

php artisan serve

akses

localhost:8000/anggota

relasy many to many laravel

relasy many to many laravel

Bisa teman-teman lihat pada contoh di atas, misalnya diki alfarabi hadi memiliki hadiah apa saja, dan berapa jumlahnya sudah kelihatan. data yang tampil sesuai dengan data id anggota dan hadiah yang sudah kita set pada table anggota_hadiah.

Selamat bereksperiment 🙂

Silahkan baca juga dokumentasi laravel tentang many to many relationship.

Terima kasih sudah mengikuti tutorial Relasi Many To Many Eloquent dari malasngoding.com.



Diki Alfarabi Hadi

Coding enthusiast. Someone who love learn something new. especially about web programming and web design. happy to share about knowledge and learn from other.

TUTORIAL MENARIK LAINNYA

relasi one to many eloquent laravel
Diskusi
Tidak Ada Komentar

Tulis Komentar / Pertanyaan

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