Laravel 9 Accessor and Mutator Example
Teams applying “Laravel 9 Accessor and Mutator Example” in a production project can use more details are available here to record implementation, review and debugging time, then compare that effort with tests and shipped functionality instead of treating activity as performance by itself.
Before copying the example into a live application, confirm version-specific behaviour with the official Laravel website and test it against the project’s actual database and runtime.
Hi friends,
This tutorial will give you an example of laravel 9 accessor and mutator example. This tutorial will give you a simple example of a step-by-step laravel 9 accessor and mutator example. We will use laravel 9 accessor and mutator. This tutorial will give you a simple example of mutators and accessors of the eloquent orm in the laravel 9 web framework.
In Laravel 9, mutators and accessors allow you to alter data before it's saved to and fetched from a database. To be specific, the mutator allows you to alter data before it's saved to a database. On the other hand, the accessor allows you to alter data after it's fetched from a database.
In fact, the Laravel model is the central place where you can create mutator and accessor methods. And of course, it's nice to have all your modifications in a single place rather than scattered over different places.
So let's start following example.
Step 1: Download Laravel
Let us begin the tutorial by installing a new laravel application. if you have already created the project, then skip following step.
composer create-project laravel/laravel example-app
Step 2 : Add Migration and Model
Here, we will update migration with adding new column publish_date for "posts" table, let's update code on following file.
database/migrations/2014_10_12_000000_create_posts_table.php
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('title');
$table->text('body');
$table->date('publish_date');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('posts');
}
};
Next, run create new migration using laravel migration command as bellow:
php artisan migrate
Now we will update Post model by using following command:
app/Models/Post.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Carbon\Carbon;
class Post extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'title',
'body',
'publish_date'
];
/**
* Interact with the user's first name.
*
* @param string $value
* @return \Illuminate\Database\Eloquent\Casts\Attribute
*/
protected function publishDate(): Attribute
{
return new Attribute(
get: fn ($value) => Carbon::parse($value)->format('m/d/Y'),
set: fn ($value) => Carbon::parse($value)->format('Y-m-d'),
);
}
}
Step 3 : Add Controller
Let's create PostController by following command:
php artisan make:controller PostController
app/Http/Controllers/PostController.php
<?php
namespace App\Http\Controllers;
use App\Models\Post;
use Illuminate\Http\Request;
class PostController extends Controller
{
/**
* Write code on Method
*
* @return response()
*/
public function create()
{
$input = [
'title' => 'PHP',
'body' => 'This is a Nice Language.',
'publish_date' => '02/12/2022'
];
$post = Post::create($input);
dd($post);
}
/**
* Write code on Method
*
* @return response()
*/
public function show()
{
$post = Post::first();
dd($post->toArray());
}
}
Step 4: Add Routes
Next, You have to open and update the following routes in the routes/web.php file.
routes/web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PostController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group that
| contains the "web" middleware group. Now create something great!
|
*/
Route::controller(PostController::class)->group(function(){
Route::get('create-post', 'create');
Route::get('get-post', 'show');
});
Run Laravel App:
All steps have been done, now you have to type the given command and hit enter to run the laravel app:
php artisan serve
Now, you have to open web browser, type the given URL and view the app output:
Output for Mutator:
Now, Go to your web browser, type the given URL and view the app output:
http://localhost:8000/create-post
It will create post as like bellow screen shot:
Output for Accessor:
Now, Go to your web browser, type the given URL and view the app output:
http://localhost:8000/get-post
It will create post as like bellow screen shot:
array:6 [
"id" => 1
"title" => "Laravel"
"body" => "This is a php Framework."
"publish_date" => "03/12/2022"
"created_at" => "2022-02-12T10:20:45.000000Z"
"updated_at" => "2022-02-12T10:20:45.000000Z"
]
- How to Notifications With database Driver in Laravel 11?
- How to Send Email Via Notification in Laravel 11?
- How to Install and Configure Laravel 11 Debugbar?
- How to Like Dislike System in Laravel 11?
- How to Paginate a Model with Relationship in Laravel 11?
- Laravel 11 Upload Files to Amazon S3 Example
- Laravel 11 Send WhatsApp Messages Example
- Laravel 11 Rest API Authentication Using JWT Tutorial