Tutorial Laravel #23 : Relasi One To One Eloquent


Relasi One To One Eloquent – Sebelumnya pernah disinggung bahwa Eloquent Laravel memiliki banyak sekali fitur yang bisa memudahkan kita dalam pengembangan website atau aplikasi berbasis website. salah satu fitur nya lagi akan kita bahas pada tutorial Relasi One To One Eloquent ini.

Fitur yang dimaksud adalah adanya fitur relasi antar tabel secara otomatis. dan dari relasi antar tabel ini ada banyak lagi fungsi yang bisa langsung kita gunakan.

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.

 


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

action url laravel
laravel localization

Diskusi

10 Komentar
  • Ahmad 6 years ago

    Keren

  • fharhan amrin 5 years ago

    selamat malam pak,ijin absen belajar,kenapa jika name modelnya di nganti PenggunaModel misalkan pak,kok jadi error nya?

    • Diki Alfarabi Hadi 5 years ago

      memang ga bisa mas, nama modelnya mengikuti nama table kalau di laravel

  • fharhan amrin 5 years ago

    oke pak terimakasih,baru tau saya.

  • zai 5 years ago

    “Trying to get property ‘nomor_telepon’ of non-object

    knpa ya gan ?

    • Diki Alfarabi Hadi 5 years ago

      coba cek ada gak kolum nomor_telepon di table nya?

  • zai 5 years ago

    ada mas

    • Diki Alfarabi Hadi 5 years ago

      error seperti itu biasanya ada penulisan yg salah mas

  • ypr 3 years ago

    jika nanti kita implementasikan di webite, apakah no telpone itu kita isi data nya dulu mas.

  • soleh 3 years ago

    izin bertanya mas, bagaimana cara menambahkan data pada tabel yang memiliki relasi tersebut (1 to 1)

Tulis Komentar / Pertanyaan

Download ebook belajar HTML & CSS dasar untuk pemula gratis

Download Ebook belajar HTML & CSS dasar untuk pemula gratis.

Ebook ini bisa di download oleh teman-teman yang baru mulai belajar HTML dan CSS dasar tapi tidak tahu mau memulai belajar dari mana. materi pembelajaran sudah di susun secara sistematis dan di dukung contoh gambar.

DOWNLOAD