Tutorial Lanjutan Relasi Table Pada Laravel Dengan Eloquent

Pada tutorial sebelumnya saya sudah membahas tentang bagaimana cara melakukan relasi table pada laravel dengan eloquent secara dasar yaitu dengan menggunakan One To Many, One To One dan Many To Many, pada tutorial kali ini saya akan melanjutkan tutorialnya dengan membahas relasi yang lebih advance yaitu Has Many Through, Polymorphic Relations dan juga Many To Many Polymorphic Relations

Relasi Table Pada Laravel Dengan Eloquent # Has Many Through

Pada relasi kali ini, kita akan membuat relasi yang menghubungkan beberapa table tanpa harus merelasikan semua table tersebut. Misalkan saya ingin menampilkan semua artikel yang berasal dari kota tertentu, hal ini bisa dilakukan tanpa harus menambah kolom kota pada artikel. Kita hanya cukup membuat table cities dan merelasikannya dengan table users. Mari kita buat struktur tablenya

cities.sql

dan kita ubah table users

Nah sekarang kita buat Model untuk table cities.

City.php

Lalu kita modifikasi model User

User.php

Setelah selesai memodifikasi Model, sekarang kita memodifikasi ArticleController.php. Tambahkan method berikut pada controller tersebut.

ArticleController.php

Lalu kita buat 1 halaman views untuk menampilkan artikel berdasarkan kota. Buat file bernama city.blade.php di dalam direktori app/views/article.

city.blade.php

 Nah, output dari script diatas adalah seperti berikut:

Output Has Many Through

OK, sekarang kita lanjut ke relasi table pada laravel dengan eloquent yang berikutnya yaitu Polymorphic Relation.

Relasi Table Pada Laravel Dengan Eloquent # Polymorphic Relation

Polymorphic Relation memungkinkan kamu untuk merelasikan 1 entitas dengan banyak entitas. Contohnya seperti ini, setiap user dan artikel dapat memiliki komentar. Nah, daripada membuat 2 buah table komentar, kita dapat membuat 1 table saja untuk menampung komentar tersebut dan menampilkannya berdasarkan tipe Model.

 Dapat dilihat bahwa disitu ada kolom bernama commentable_id dan commentable_type. Kolom commentable_id berfungsi sebagai parameter id, baik id dari table articles maupun table users, sedangkan commentable_type berfungsi untuk mengidentifikasi apakah comment ini untuk model User atau model Article. Langsung saja kita buat model untuk table comments ini.

Comment.php

Lalu kita tambahkan method berikut pada model User.php dan juga Article.php

 Setelah itu kita modifikasi views pada article, user dan juga city.

app/views/article/index.blade.php

app/views/user/profile.blade.php

app/views/article/city.blade.php

Hasil akhir dari script diatas adalah sebagai berikut:

Output Polymorphic Relations User Output Polymorphic Relations City Output Polymorphic Relations Article

OK, sekarang kita lanjut ke relasi table di Laravel dengan Eloquent yang terakhir yaitu Many To Many Polymorphic Relations.

Relasi Table Pada Laravel Dengan Eloquent # Many To Many Polymorphic Relations

Hampir sama dengan Polymorphic Relations, Many To Many Polymorphic Relations mendukung lebih dari 1 table. Contohnya seperti ini, dalam sebuah artikel terdapat tag. Untuk memunculkan tag tersebut, kita membutuhkan 2 table yaitu adalah table tags dan table taggables.

Fungsi dari table tags adalah untuk menyimpan data master tag, sedangkan table taggable berfungsi untuk merelasikan table tags dengan table articles dan juga table users.

tags.sql

taggables.sql

Sekarang kita buat modelnya, buat model bernama Tag.php

Setelah itu kita tinggal menambahkan method berikut pada model User.php dan juga Article.php.

Langkah terakhir adalah memodifikasi file views dari user dan article untuk menampilkan tag tersebut.

app/views/article/index.blade.php

app/views/user/profile.blade.php

 Hasil output dari script diatas adalah sebagai berikut:

Output Many To Many Polymorphic ArticleOutput Many To Many Polymorphic User

Nah, sekian penjelasan saya tentang bagaimana cara melakukan join / relasi table di Laravel dengan Eloquent. Kamu bisa membaca lebih lanjut dokumentasi tentang Relationships di Laravel dan untuk mendownload full source dari tutorial ini, kamu bisa mengklik pada link di bawah ini. Silahkan tinggalkan komentar dan semoga bermanfaat. 😀

Download Link

Berlangganan Artikel

Daftarkan email anda sekarang dan dapatkan update terbaru dari artikel saya

I will never give away, trade or sell your email address. You can unsubscribe at any time.

Powered by Optin Forms

Tinggalkan Balasan