Friday, November 2, 2018

Relasi Table One To One di Laravel

Relasi Table One To One di Laravel


Pada postingan kali ini saya akan membuat bagaimana cara relasi table one to one di laravel. Relasi One to one pada laravel, hampir sama dengan relasi one to many pada postingan saya sebelumnya. Sebenarnya, konsep relasi table pada laravel semua nya sama hanya saja penamaan fungsi dari laravelnya yang berbeda. Misalkan contoh untuk one to one, pada modelnya nanti kita akan menggunakan fitur yang namanya hasOne , sedangkan untuk one to many menggunakan hasMany. Dalam penggunaan relasi pada laravel, kita harus terlebih dahulu mendeklarasikan foreign_key yang berhubungan untuk direlasikan pada table.


Sebelum kita membuat relasi table one to one pada laravel, kita harus mendeklarasikan foreign_key terlbih dahulu. Jika kalian masih bingung caranya, lihat saja pada postingan One to Many Relation diatas. Setelah foreign_key kalian telah benar artinya kita sudah siap untuk membuat relasi one to one di laravel.

Pada postingan ini, saya akan memberikan contoh misalkan ada table User dan table Passport. Pembacaan alurnya sangat sederhana, artinya 1 user hanya memiliki 1 passport, sedangkan 1 passport hanya dimiliki oleh 1 user. Oleh karena itu kita akan bermain pada model User dan model Passport. Sebelumnya jika kalian belum memiliki model, gunakan perintah php artisan make:model namanya pada cmd untuk membuat model secara otomatis.

Pertama, kita akan mengedit model yang ada pada table User


Ini adalah  model user, didalamnya kita tambahkan function dengan nama passport. Setelah itu kita akan menggunakan fitur hasOne yang telah disediakan oleh laravel, arahkan ke arah model passport. Digambar atas saya meletakkan model passportnya pada folder App/Models. Kemudian jangan lupa untuk meletakkan foreign_key setelahnya dengan dipisahkan tanda koma.  Nama function passport ini nanti akan kita panggil untuk menegeluarkan datanya.

Selanjutnya adalah kita akan mencoba mengeluarkan data user yang memiliki passport. Saya akan mengeluarkannya pada folder viewsnya.


Ini adalah contoh sederhana saya buat untuk memanggil datanya. Untuk  $user disana adalah variable yang berasal dari controller. Sehingga dari controller hanya mengeluarkan datanya saja dan kemudian di passing variable nya pada file index atau read data. passport merupakan function yang kita panggil dari model user tadi sehingga kita bisa akses table passport. no_pass merupakan attribut yang akan kita tampilkan yang berasal dari model passport.

Kemudian langkah yang sama lakukan pada model passport. Namun, ada yang berbeda pada fitur yang digunakan. Jika tadi menggunakan hasOne sekarang menggunakan belongsTo. Nah, belongsTo ini fungsi sebagai reverse atau kebalikan dari table yang direlasikan. Sehingga akan terlihat pada gambar dibawah ini.


Enaknya laravel ini adalah dia masih bisa ditelaah dengan menggunakan bahasa manusia. Contohnya seperti gambar diatas, jika dibaca maka akan dibaca class Passport ini dimiliki oleh User.  Oleh karena itu, kita arahkan kepada model user seperti gambar diatas. Setelah itu lakukan cara pemanggilan datanya menggunakan syntax yang sama seperti sebelumnya. Jika kita sesuaikan maka syntax yang akan kita gunakan adalah seperti digambar dibawah ini.


$passport berasal dari controller yang sebelumnya sudah diatur untuk mengeluarkan datanya. Setelah itu user adalah function yang ada pada model passport tadi sehingga kitaakan mengeluarkan properti name yang ada pada table user.

PENTING >> Cara ini dilakukan oleh saya dengan table yang sudah terisi datanya. Jika kalian ingin mengisi datanya silahkan buka postinga CRUD di laravel.



#SyntaxError 


EmoticonEmoticon