How to Work with Laravel 9 Model Events Tutorial
Teams applying “How to Work with Laravel 9 Model Events Tutorial” in a production project can use the official Monitask website 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,
Today, I am explain how to work with laravel 9 model events tutorial. Inside this article we will see the concept of Laravel 9 Model events tutorial. Article gives you the classified information about laravel model events. you can easy and simply use model creating event in laravel 9. In this example,I will learn you how to use model creating event in laravel 9.
If you are looking for an article about model events of laravel, then you are at the good place to learn about model events and their role to use. Step by step guide for model events, you are going to learn.
So let's start following example:
creating:
Call Before Create Record.
created: Call After Created Record.
updating: Call Before Update Record.
updated: Class After Updated Record.
deleting: Call Before Delete Record.
deleted: Call After Deleted Record.
retrieved: Call Retrieve Data from Database.
saving: Call Before Creating or Updating Record.
saved: Call After Created or Updated Record.
restoring: Call Before Restore Record.
restored: Call After Restore Record.
replicating: Call on replicate Record.
Sometime, we need to add unique number or create slug from title then before create record you need to update this fields at time we can use those time of event. same thing when you update records then also you have to update slug and might when remove records then also you have to delete child records. so event is very helpful and i will say you must have to use when you need this type of situation.
I will explain few important events with example so you will understand how it works and how you can use it.
In this example, i will write down creating, created, updating, updated and deleted events and i will show you one by one example with output in log file so you can easily understand, how model events works.
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
Create Post Model with events
Here, we will create post model with events. so let's create and put bellow code:
php artisan make:model Post
app/Models/Post.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Log;
use Str;
class Post extends Model
{
use HasFactory;
protected $fillable = [
'title', 'slug', 'body'
];
/**
* Write code on Method
*
* @return response()
*/
public static function boot() {
parent::boot();
/**
* Write code on Method
*
* @return response()
*/
static::creating(function($item) {
Log::info('Creating event call: '.$item);
$item->slug = Str::slug($item->title);
});
/**
* Write code on Method
*
* @return response()
*/
static::created(function($item) {
/*
Write Logic Here
*/
Log::info('Created event call: '.$item);
});
/**
* Write code on Method
*
* @return response()
*/
static::updating(function($item) {
Log::info('Updating event call: '.$item);
$item->slug = Str::slug($item->name);
});
/**
* Write code on Method
*
* @return response()
*/
static::updated(function($item) {
/*
Write Logic Here
*/
Log::info('Updated event call: '.$item);
});
/**
* Write code on Method
*
* @return response()
*/
static::deleted(function($item) {
Log::info('Deleted event call: '.$item);
});
}
}
Now here, we will simply call one by one model method and let's see output:
Create Record: Creating and Created Event
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
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
Post::create([
'title' => 'Laravel',
'body' => 'This is a PHP Framework.'
]);
dd('done');
}
}
Output Log File:
[2020-10-20 14:37:26] local.INFO: Creating event call: {"title":"Laravel","body":"This is a PHP Framework."}
[2020-10-20 14:37:26] local.INFO: Created event call: {"title":"Laravel","body":"This is a PHP Framework.","slug":"laravel","updated_at":"2022-03-12T14:37:26.000000Z","created_at":"2022-03-12T14:37:26.000000Z","id":1}
Update Record: Updating and Updated Event
app/Http/Controllers/PostController.php
<?php
namespace App\Http\Controllers;
use App\Models\Post;
use Illuminate\Http\Request;
class PostController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
Post::find(1)->update([
'title' => 'Laravel updated',
'body' => 'This is a PHP Framework updated'
]);
dd('done');
}
}
Output Log File:
[2020-10-20 14:39:04] local.INFO: Updating event call: {"id":1,"title":"Laravel updated","body":"This is a PHP Framework updated","created_at":"2022-03-20T14:45:26.000000Z","updated_at":"2022-03-20T14:37:26.000000Z","slug":"silver"}
[2020-10-20 14:39:04] local.INFO: Updated event call: {"id":1,"title":"silver updated","body":"This is a PHP Framework updated","created_at":"2022-03-20T14:37:26.000000Z","updated_at":"2022-03-20T14:39:04.000000Z","slug":"silver-updated"}
Delete Record: Deleted Event
app/Http/Controllers/PostController.php
<?php
namespace App\Http\Controllers;
use App\Models\Post;
use Illuminate\Http\Request;
class PostController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
Post::find(1)->delete();
dd('done');
}
}
Output Log File:
[2020-10-21 03:14:45] local.INFO: Deleted event call: {"id":1,"title":"laravel updated","body":"This is a PHP Framework updated","created_at":"2020-10-20T14:37:26.000000Z","updated_at":"2020-10-20T14:39:04.000000Z","slug":"silver-updated"}
Now you can check from your end.
- 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