¶Pendahuluan
Pada artikel sebelumnya kita telah membuat model dan migration menggunakan laravel, selanjutnya pada artikel ini kita akan belajar bagaimana cara merelasikan antar tabel menggunakan Eloquent Relationships yang telah disediakan oleh Laravel.
¶Membuat Relasi Model Post
Silahkan teman - teman buka file app/Models/Post.php
, kemudian tambahkan kode seperti berikut ini :
Post.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
use HasFactory;
protected $fillable = ['user_id', 'title', 'content'];
public function user()
{
return $this->belongsTo(User::class);
}
}
Pada kode diatas kita menambahkan relasi dari tabel posts ke tabel users yang kita beri nama dengan user
, disini jenis relasi yang kita gunakan adalah belongsTo
yang artinya 1 posts hanya bisa dimiliki oleh satu users.
¶Membuat Relasi Model User
Setelah berhasil membuat relasi dari tabel posts ke tabel users, kita akan lanjutkan untuk membuat relasi untuk tabel users, silahkan teman - teman buka file app/Models/User.php
, kemudian tambahkan kode seperti dibawah ini :
User.php
<?php
namespace App\Models;
// use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable
{
use HasFactory, Notifiable, HasRoles;
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $fillable = [
'name',
'email',
'password',
];
/**
* The attributes that should be hidden for serialization.
*
* @var array<int, string>
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
{
return [
'email_verified_at' => 'datetime',
'password' => 'hashed',
];
}
/**
* getUserPermissions
*
* @return void
*/
public function getUserPermissions()
{
return $this->getAllPermissions()->mapWithKeys(fn($permission) => [$permission['name'] => true]);
}
/**
* isSuperAdmin
*
* @return void
*/
public function isSuperAdmin()
{
return $this->hasRole('super-admin');
}
public function posts()
{
return $this->hasMany(Post::class);
}
}
Pada kode diatas kita menambahkan relasi dari tabel users ke tabel posts yang kita beri nama dengan posts
, disini jenis relasi yang kita gunakan adalah hasMany
yang artinya 1 users bisa memiliki banyak posts.
¶Penutup
Pada artikel kali ini kita telah berhasil menyelesaikan pembuatan relasi antar tabel menggunakan eloquent relationships, berikutnya kita akan lanjutkan untuk melakukan konfigurasi share data global menggunakan inertia.