Laravel

Mengenal Relationships di Laravel 5.4

Mengenal Relationships di Laravel 5.4

1647 Dilihat

Terima kasih karena masih setia mengikuti artikel tutorial laravel bahasa indonesia yang kami buat. Kali ini kita akan sedikit menyinggung mengenai relationships, tepatnya basic relationships dengan laravel. Relationships akan kita bahas lebih banyak dan lebih mendetail lagi pada artikel tersendiri nantinya, kita akan berkenalan terlebih dahulu. Ada dua point yang akan kita singgung saat ini yakni : One to one dan One to Many.

Persiapan Membuat Relationships

Seperti yang kita ketahui, tutorial yang tersedia di daengweb semaksimal mungkin akan terus saling terkait. Oleh karena itu, sebelumnya kita telah memiliki model Post.php dan User.php, kedua table ini akan kita buat agar saling berelasi.

Terlebih dahulu, kita modifikasi migration post yang terletak di database/migration kemudian tambahkan user_id yang akan dijadikan foreign key.

$table->integer('user_id')->unsigned();

sehingga file migration untuk table posts, akan menjadi seperti ini :

Schema::create('posts', function (Blueprint $table) {
   $table->increments('id');
   $table->integer('user_id')->unsigned();
   $table->string('title', 60);
   $table->timestamps();
});

Jangan lupa modifikasi juga model Post.php dengan menambahkan user_id kedalam fillable property.

protected $fillable = ['user_id', 'title'];

Defining Relationships : One to Many

Menariknya syntax laravel untuk relationships sangat mudah untuk dipahami, sehingga untuk membuat relation one to many, cukup tambahkan method berikut pada Post.php :

public function user()
{
    return $this->belongsTo(User::class);
}

Banyak post bisa dimiliki oleh satu user, sehingga kita menggunakan belongsTo sebagai tipe relationships. Kemudian pada User.php tambahkan juga method berikut :

public function post()
{
    return $this->hasMany(Post::class);
}

Satu user bisa memiliki banyak post, jadi kita menggunakan hasMany.

Jadi dalam kedua case tersebut, Laravel menggunakan user_id yang terdapat pada Post untuk mengidentifikasi dan mecocokkan dengan id pada User.

Sampai disini, relationships One to Many sudah bisa digunakan. Sehingga memungkinkan kita untuk menggunakannya seperti ini :

$post = App\User::find(1)->post()->where('name', 'foo')->first();

Syntax diatas, memungkinkan kita untuk menggunakan post method dari User model, yang telah didefinisikan untuk mengambil post data yang dimiliki oleh user.

Sebagaimana yang anda lihat, pada dasarnya method tersebut memberikan kita data post dimana ‘name’ sama dengan ‘foo’ yang dimiliki oleh user id 1.

Karena dengan relationships, model User tahu mana data posts yang dimilikinya. Dan tentunya hal ini akan memudahkan kita dalam berkerja.

Kini kita berjumpa lagi dengan Tinker, yang sangat berguna untuk melakukan pengujian. Pertama, buat beberapa sample data pada table posts terlebih dahulu dan tentunya juga terdapat data pada table users. Kemudian jalankan tinker via command line :

php artisan tinker

lalu selanjutnya gunakan command :

$post = \App\User::find(1)->post()->get();

Kita menggunakan method find untuk menemukan user dengan id 1, kemudian mengambil data users yang terkait dengan posts. Asumsinya anda memiliki user id 1 dan memiliki beberapa data posts yang menggunakan user id tersebut, maka hasilnya akan terlihat seperti ini :

Defining Relationships : One to One

Tidak jauh berbeda pada maksud dan penggunaannya, jika one to many dimana user bisa memiliki banyak data posts, maka untuk one to one, user hanya memiliki 1 data terkait pada table yang telah didefinisikan. Kita masih akan menggunakan table users dan posts, maka relationships nya akan menjadi seperti ini pada model User:

public function post()
{
    return $this->hasOne(Post::class);
}

sedangkan pada model Post tetap menggunakan belongsTo. Cukup mudah bukan ? Selamat jatuh cinta!

Backend Developer iTechShark, salah satu perusahaan asal Amerika. Senang dengan teknologi baru. Laravel addict yang tidak fanatik. Merekam jejak dengan menulis

Membuat Aplikasi Invoice Laravel 5.7 #4: Create Invoice Laravel

Membuat Aplikasi Invoice Laravel 5.7 #4:...

Kenapa masih disebut bagian dari CRUD? Sebab fitur untuk membuat invoice baru, kita menggunakan fungsi Create. sedangkan fitur untuk menampilkan, invoice yang digunakan adalah fungsi Read. Berikut ada...

Membuat Aplikasi Invoice Laravel 5.7 #3: Manajemen Customer Laravel

Membuat Aplikasi Invoice Laravel 5.7 #3:...

Lanjutan seri sebelumnya yang membahas tentang module manajemen produk, pada seri ini kita akan menyelesaikan module customer. Masih berkaitan dengan CRUD karena kedua module ini merupakan data master...

Membuat Aplikasi Invoice Laravel 5.7 #2: Manajemen Produk Laravel

Membuat Aplikasi Invoice Laravel 5.7 #2:...

Melanjutkan seri belajar Laravel dengan case Membuat aplikasi invoice, dimana pada seri sebelumnya kita telah membuat struktur database yang akan digunakan. Pada seri ini, target yang akan dicapai ada...

Komentar