LARAVEL 5.7 : LARAVEL RELATION (PART 1)

November 13, 2018 by


Relation pada laravel (eloquent)
// one to one relationship
orang hanya memiliki 1 passport dan 1 passport hanya bisa dipakai oleh 1 orang.

//one to many relationship
forum punya banyak komentar akan tetapi komentar-komentar hanya memiliki 1 forum artinya hubungan forum dengan komentar yaitu one to many sedangkan komentar dengan forum memiliki hubungan one-to-one. Sebuah forum boleh punya banyak komentar tetapi komentar hanya boleh dimiliki oleh 1 forum.

//many to many relationship
User bisa belajar banyak pelajaran, sebaliknya pelajaran bisa dipelajari oleh banyak user.
Di laravel untuk melakukan relation many to many kita butuh tabel penghubung dengan tabel 1 dan tabel 2 sehingga butuh 3 tabel.

Misal : tabel users - lesson_user - lessons
Tabel lessons ini sifatnya tidak mau tahu, users artinya tidak berhubungan langsung dengan tbl user langsung. Penghubung kedua tabel adalah tabel lesson_user
misal : users : id =1 , lessons : id= 1.html, 2. css ; sedangkan di tabel lesson_user : user_id=1 dengan lesson_id = 1 dan 2 sehingga ada 2 lesson pada 1 user.

Secara default kolom pivot kita →pivot ini adalah tabel yang menghubungkan tabel dengan tabel lainnya (lesson_user) dia tidak mau tahu semua kolom-kolom lain ada tidaknya data, sebab hanya memperhatikan kolom penghubung tabel lainnya. Jadi untuk mengakses isi kolom dari tabel penghubung selain dari kolom penghubungnya kita bisa menggunakan method pivot.

Secara default tidak akan ditampilkan isi nama-nama kolom lainnya sehingga di dalam model perlu ditambahkan →withTimeStamps(); Tetapi jika kolom yang diberikan itu kolom dengan nama lainnya maka cara aksesnya yaitu →withPivot('nama_kolom1','nama_kolom2'); 
Jika ingin filter data di dalam kolom tertentu bisa ditambahkan
→wherePivot('nama_kolom','data_kolom');

jika banyak parameter untuk filter bisa menggunakan array
→wherePivot('nama_kolom',['data_kolom1','datakolom2']);

0 comments:

Post a Comment