We have already known the usage of accessors and mutators. We use accessors in laravel model to modify any field data while retrieving the records and mutators to modify any field data while inserting to database.
So, to modify any field before, we needed two separate methods for a single filed i.e. one method for accessor and one for mutator but in latest laravel release I mean in laravel 8.77.0, we can use a single method for both accessor and mutator using closure .
Given below is the syntax for single mehtod accessor and mutator:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Carbon\Carbon;
class Order extends Model
{
/**
* Get the order tax.
*/
protected function order_date(): Attribute
{
return new Attribute(
fn ($value) => Carbon::parse($value)->format('d-m-Y'), // accessor
fn ($value) => Carbon::parse($value)->format('Y-m-d'), // mutator
);
}
}
In the above closures, the first closure is for accessor and the next for mutator.
Top comments (0)