Tutorial Restful API Laravel 10 #4 : Eloquent Accessor


Tutorial Restful API Laravel 10 #4 : Eloquent Accessor

Halo teman-teman semuanya, pada artikel kali ini kita semua akan belajar tentang Eloquent Accessor di dalam Laravel dan bagaimana cara mengimplementasikannya.

Laravel memiliki fitur yang bernama Mutator, Accessor dan Casting, fitur-fitur ini digunakan untuk melakukan manipulasi data di dalam attribute database dengan sangat mudah. Contoh sederhanya misalnya kita ingin melakukan insert data dengan enkripsi ke dalam database dan melakukan deskripsi saat menampilkan dari database secara otomatis, maka kita bisa menggunakan fitur ini.

Apa itu Eloquent Accessor ?

Accessor memungkinkan kita mengubah nilai saat attribute atau field Eloquent diakses. Untuk mendefinisikan Accessor, kita bisa membuat method di dalam Model untuk menentukan attribute yang akan diakses.

Nama method yang dibuat harus sama dengan nama attribute atau field yang akan diformat dan menggunakan CamelCase.

Contohnya, jika saya punya attribute / field di dalam table dengan nama first_name, maka untuk nama method-nya adalah firstName(). Kurang lebih seperti berikut.

protected function firstName(): Attribute
{
	//...
}

Langkah 1 - Membuat Accessor untuk Attribute Image di Model Post

Sekarang kita akan belajar membuat sebuah Accessor yang digunakan untuk mengformat nilai dari attribute atau field image yang ada di dalam table posts.

Jadi, saat kita akses attribute atau field tersebut, kita akan memberikan nilai full path dari direktori dimana file gambar tersebut disimpan.

Silahkan teman-teman buka file app/Models/Post.php, kemudian ubah semua kode-nya menjadi seperti berikut ini.

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory;

class Post extends Model
{
    use HasFactory;

    /**
     * fillable
     *
     * @var array
     */
    protected $fillable = [
        'image',
        'title',
        'content',
    ];

    /**
     * image
     *
     * @return Attribute
     */
    protected function image(): Attribute
    {
        return Attribute::make(
            get: fn ($image) => url('/storage/posts/' . $image),
        );
    }
}

Dari perubahan kode di atas, pertama kita import Eloquent Attribute. terlebih dahulu.

use Illuminate\Database\Eloquent\Casts\Attribute;

Setelah itu, kita membuat method baru dengan nama image() dan di dalamnya kita melakukan return dengan path dimana file image itu berada.

get: fn ($image) => url('/storage/posts/' . $image),

Jadi ketika kita memanggil attribute image makan akan otomatis menghasilkan output seperti berikut ini :

domain.com/storage/posts/nama_file_image.png

Tapi, jika kita tidak menggunakan fitur Accessor, maka hasilnya akan seperti berikut ini :

nama_file_image.png

Kurang lebih seperti itu pembahasan bagaimana cara membuat Accessor di dalam Laravel. Pada artikel selanjutnya kita semua akan belajar bagaimana cara menampilkan data dengan format JSON untuk Rest API.

Terima Kasih



Fika Ridaul Maulayya
Full-Stack Developer, Content Creator and CO-Founder SantriKoding.com

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami