| Prime Time

Laravel #23 : Relasi One To One Eloquent

Relasi One To One Eloquent

Dalam tutorial Relasi One To One Eloquent ini akan kita uraikan satu per satu fitur keren Eloquent Relationship laravel.

Diantaranya adalah :

  • One To One
  • One To Many
  • Many To Many

Jika teman-teman pernah belajar perancangan database, pasti sudah tidak asing dengan list di atas. atau biasanya juga disebut dengan 1 .. 1, 1 .. n, n .. n.

Biasanya untuk menghubungkan 2 table atau lebih, kita menggunakan fungsi join, atau langsung menggabungkannya menggunakan query sql. Tapi di laravel, sudah ada ada fitur untuk menghubungkan 2 table atau lebih. yaitu sudah diterapkan dalam Eloquent. jadi kita bisa menampilkan data dari 2 table atau lebih dengan laravel.

Yuk langsung kita simak penjelasan berikut.

Relasi One To One Eloquent

Relasi One To One maksudnya 1 record data dari table A memiliki relasi ke 1 record data di table B.

Relasi One To One Eloquent

Relasi One To One Eloquent

Saya buatkan contohnya. gambar di atas adalah contoh sederhana one to one relationship. misalnya satu orang pengguna, memiliki satu nomor telepon. begitu juga kebalikannya, satu record data nomor telepon dimiliki oleh satu orang pengguna.


Langsung saja kita masuk ke contoh penggunaan Relasi One To One dengan Eloquent Laravel.

Contoh Relasi One To One Eloquent

Seperti pada gambar di atas, kita akan membuat dan menggunakan dua buah table seperti yang ada pada gambar di atas, yaitu kita akan menggunakan table pengguna dan table telepon sebagai contoh.

Silahkan teman-teman buat kedua buah table tersebut. teman-teman bisa membuatnya dengan menggunakan Migration dan mengisi datanya dengan Seeding Faker.

Atau jika teman-teman ingin mengimport langsung, silahkan import sql berikut.

SQL

Sampai di sini kita sudah punya table pengguna dan table telepon.

dan saya sudah mengisi data sebagai contoh saja.

relasi one to one eloquent laravel

relasi one to one eloquent laravel

Kemudian silahkan buat model model untuk pengguna.

php artisan make:model Pengguna

Kemudian buka model Pengguna yang sudah dibuat tersebut. dan ketik perintah berikut.

belajar_laravel/app/Pengguna.php

Di sini kita memberitahukan bahwa table yang digunakan adalah table “pengguna”. bukan “penggunas” (plural). bagian ini sudah dijelaskan pada tutorial sebelumnya tentang pembuatan model dan penamaan otomatisnya pada laravel.

Selanjutnya kita buat sebuah fungsi baru untuk memberitahukan model pengguna, bahwa table pengguna memiliki relasi 1 ke model atau table telepon.

Sekarang buat model untuk table telepon.

php artisan make:model Telepon

belajar_laravel/app/Telepon.php

Pada model telepon ini, kita deklarasikan dulu bahwa table yang kita gunakan adalah table “telepon”.

kemudian kita buat fungsi untuk menjelaskan pada model telepon, bahwa model telepon terhubung dengan model pengguna.

Nah, coba teman-teman perhatikan. sebelumnya pada model Pengguna, kita memberitahukan bahwa table pengguna memiliki relasi 1 ke table telepon.

dan di Model telepon kita beritahu bahwa table telepon ini dimiliki oleh table pengguna.

Jadi satu sama lain sudah terhubung sekarang.

relasi antar table laravel

relasi antar table laravel

Kedua table ini dihubungkan oleh kolum pengguna_id yang ada pada table telepon.

nama kolum pengguna_id mengikuti nama table yang dihubungkan dengannya. jadi secara otomatis table telepon mencari id pengguna nya masing-masing ke table pengguna.

pengguna = pengguna_id

Sungguh sangat sederhana. fitur ini akan banyak sekali teman-teman butuhkan pada saat teman-teman membuat aplikasi yang berukuran besar. kita tidak perlu lagi repot-repot menghubungkan table.

cukup mendeklarasikan pada model nya masing-masing, bahwa model tersebut terhubung ke table/model mana saja. dan bagaiamana jenisnya, one to one kah? one to many? atau many to many.

Pada tutorial ini kita masih membahas relasi one to one. pada tutorial selanjutnya kita juga akan membahas relasi one to many dan many to many.

Oke kita lihat hasilnya.

Buat route “/pengguna”, kita akan menampilkan data pengguna dan data nomor telepon masing-masing pengguna pada route ini.

belajar_laravel/routes/web.php

kemudian buat controller PenggunaController.php.

saya mencoba membuat controller ini menggunakan php artisan. masuk ke direktori project laravel kita, dan ketik perintah berikut.

php artisan make:controller PenggunaController

Cara membuat controller pada laravel menggunakan php artisan sudah saya jelaskan pada tutorial sebelumnya.

Baca : Tutorial Laravel #3 : Membuat Controller Dengan Laravel

Setelah membuat controller PenggunaController.php, kemudian buat method index() di dalamnya.

belajar_laravel/app/Http/controllers/PenggunaController.php

pada controller ini kita ambil data pengguna, dan kita return ke view pengguna, caranya masih sama seperti yang sudah kita pelajari sebelumnya.

buat sebuah view untuk menampilkan data pengguna. buat view sesuai dengan yang sudah kita tentukan pada controller, yaitu view pengguna.blade.php

belajar_laravel/resources/views/pengguna.blade.php

Perhatikan pada view di atas, kita menampilkan data pengguna menggunakan foreach.

Tapi ada yang keren di sini, kita bisa langsung mengakses data telepon dari data pengguna ini.

Hal ini bisa dilakukan karena kita sudah mendeklarasikan relasi one to one antara kedua table ini. (model/table pengguna dan model/table telepon).

dari variabel $p kita bisa langsung mengakses ke data telepon ( $p->telepon ), dan lebih spesifik lagi dengan memilih nama kolum nya ( $p->telepon->nomor_telepon ).

Kita lihat hasilnya ya.

silahkan jalankan project.

php artisan serve

dan akses

localhost:8000/pengguna

Maka berikut hasil one to one relationship yang kita dapatkan.

one to one eloquent laravel

one to one eloquent laravel

Oke teman-teman, sekian tutorial Relasi One To One Eloquent, semoga dapat bermanfaat untuk teman-teman semua.