Cara Menggunakan Mutator Dan Accessors Di Laravel - CRUDPRO

Cara Menggunakan Mutator Dan Accessors Di Laravel

Cara Menggunakan Mutator Dan Accessors Di Laravel

Laravel Accessors dan Mutators adalah metode khusus yang ditentukan pengguna. Accessors digunakan untuk memformat atribut saat Anda mengambilnya dari database. Sedangkan, Mutator digunakan untuk memformat atribut sebelum menyimpannya ke dalam database.

Mari Mulai Membuat dan Menggunakan Accessor dan Mutator!

Misalkan Anda memiliki Model yang terlihat seperti ini :

app/Product.php

<?php

namespace App\Models;

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

class Product extends Model
{
    use HasFactory;

    protected $fillable = [
        'name', 'amount', 'description'
    ];

    // Mutator for Name column
    // when "name" will save, it will convert into lowercase
    public function setNameAttribute($value)
    {
        $this->attributes['name'] = strtolower($value);
    }
}

dan Controller yang terlihat seperti ini:

ProductController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Product;

class ProductController extends Controller
{
    public function setProduct()
    {
        $product = new Product();

        $product->name = "Sample Product 1";
        $product->amount = 12;
        $product->description = "Sample product created";
        $product->save();
    }
}

juga rute yang terlihat seperti ini :

web.php

Route::get('product', [ProductController::class, 'setProduct']);

Langkah 1: Buat Mutator Dalam Model

Mutator mengubah nilai atribut Eloquent saat disetel. Mutator berfungsi saat kita menyimpan data di dalam tabel database.

Sintaks untuk membuat mutator –

Untuk menentukan mutator, tentukan metode set {Attribute}Attribute pada model Anda di mana {Attribute} adalah nama cased "studly" dari kolom yang ingin kita ubah saat disimpan.

Rekatkan ini di app/Product.php

public function setNameAttribute($value)
    {
        $this->attributes['name'] = strtolower($value);
    }

Seharusnya sekarang terlihat seperti ini :

<?php

namespace App\Models;

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

class Product extends Model
{
    use HasFactory;

    protected $fillable = [
        'name', 'amount', 'description'
    ];

    // Mutator for Name column
    // when "name" will save, it will convert into lowercase
    public function setNameAttribute($value)
    {
        $this->attributes['name'] = strtolower($value);
    }
}

Periksa hasilnya

Buka URL: http://127.0.0.1/product

Hasilnya akan terlihat seperti ini :

Cara Menggunakan Mutator Dan Accessors Di Laravel

Langkah 2: Buat Pengakses Dalam Model

Pengakses mengubah nilai atribut Eloquent saat diakses. Ini berfungsi saat kami mengambil data dari tabel.

Sintaks untuk membuat accessor –

Untuk menentukan pengakses, buat metode get{Attribute}Attribute pada model Anda di mana {Attribute} adalah nama kolom yang diberi huruf "studly".

Buka Product.php dan tambahkan kode ini ke dalamnya

public function getNameAttribute($value)
    {
        return strtoupper($value);
    }

Buka file controller ProductController.php dan tambahkan metode ini ke dalamnya.

public function getProducts()
    {
        $products = Product::get();

        foreach ($products as $product) {

            echo $product->name . "<br/>";
        }
    }

Buka web.php dan tambahkan rute ini ke dalamnya.

Route::get('list-product', [ProductController::class, 'getProducts']);

Periksa Hasilnya

URL: http://127.0.0.1/list-product

Anda harus melihat daftar nama (nama produk) masing-masing dalam huruf besar. Ini karena kami telah mengubah nilai dengan metode accessor.

Hore! Kami telah berhasil membuat dan menggunakan pengakses dan mutator, gunakan ini pada proyek mendatang Anda untuk meningkatkan keterbacaan, stabilitas, dan kinerja kode Anda!