Assalamu'alaikum Wr. Wb.
Pada tutorial kali ini kita akan membahas salah satu fitur pada Framework Laravel yaitu relasi many to many. Relasi many to many adalah salah satu jenis relasi yang umum digunakan oleh aplikasi back end untuk merelasikan dua table pada database yang mana table A bisa memiliki atau dimiliki oleh banyak table B begitu juga sebaliknya, umumnya relasi many to many membutuhkan sebuah table bantuan yang biasa disebut pivot table yang berisi id dari table A dan table B, misal yang akan saya gunakan pada tutorial kali ini yaitu table user dan table role, user bisa memiliki banyak role dan role bisa memiliki banyak user, saya menggunakan Laravel versi 8, untuk laravel versi lain bisa menyesuaikan dengan versi Laravel yang anda gunakan,langsung saja untuk tutorialnya adalah sebagai berikut:
- Siapkan project Laravel anda beserta table-table yang akan direlasikan many to many
Hal pertama yang perlu kita lakukan adalah menyiapkan project laravel kita, di sini saya menggunakan Laravel 9, untuk menginstall Laravel versi 8 anda perlu menggunakan php versi 7.x dan menggunakan perintah berikut:
composer create-project laravel/laravel example-app
Atau jika anda sudah memiliki project Laravel anda sebelumnya, hal selanjutnya yang perlu anda siapkan adalah database yang akan direlasikan many to many, jika anda belum memilikinya anda dapat membuatnya menggunakan fitur migration, misal pada kasus table user dan role anda dapat membuat file migrasi dengan menggunakan perintah berikut:
untuk membuat file migration user:
php artisan make:migration user
untuk membuat file migration role:
php artisan make:migration role
Lalu untuk definisi kolom-kolom nya dapat diisi sesuai kebutuhan, untuk informasi lebih lanjut tentang membuat file migrasi pada Laravel 9 anda dapat membacanya lebih lanjut di sini. - Menyiapkan model yang akan direlasikan
Langkah selanjutnya yang perlu anda siapkan adalah menyiapkan model dari table-table yang akan direlasikan many to many, misal pada kasus user dan role, untuk membuat model-modelnya anda dapat menggunakan perintah perikut pada directory root project laravel anda pada terminal:
untuk membuat file model user:
php artisan make:model User
untuk membuat file model role:
php artisan make:model Role - Merelasikan model-model yang akan direlasikan many to many
Selanjutnya anda perlu merelasikan table-table yang akan direlasikan many to many menggunakan belongsToMany, pada kasus user dan role contoh kodenya adalah sebagai berikut:
pada model User:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
...
class User extends Authenticatable
{
...
public function role(): BelongsToMany
{
return $this->belongsToMany(Role::class, 'user_roles','role_id','user_id');
}
...
}
pada model Role:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
...
class Role extends Model
{
...
public function role(): BelongsToMany
{
return $this->belongsToMany(User::class, 'user_roles','user_id','role_id',);
}
...
}
- Menambahkan user baru sekaligus menambahkan data ke tabel pivot user_roles
Selanjutnya kita sudah bisa melakukan penambahan data user disertai dengan penambahan data ke tabel user_roles, contoh kode yang dapat anda terapkan di dalam function pada controller UserController adalah sebagai berikut:$new_user = User::find($add_user['id']);
$new_user->role()->attach('1',['created_at' => now(), 'updated_at' => now()]); - Mengupdate role user menggunakan function sync
Function sync pada fitur pivot tabel Laravel adalah function yang dapat digunakan untuk mereplace data pada tabel pivot dengan data yang baru jika data yang diinput adalah data yang berbeda dengan data yang sudah ada pada pivot table, contoh penggunaanya pada controller UserController dengan function update_role adalah sebagai berikut:$user = User::find($user_id);
$user->role()->sync($role_id);
0 Komentar