Laravel 10 Model Events Example Tutorial
Hi Friends,
This article is focused on laravel 10 model events example. This example will help you model events in laravel 10. if you want to see an example of eloquent model events laravel 10 then you are in the right place. I’m going to show you about laravel 10 model events created. you will do the following things for laravel 10 model events updated.
Laravel provides a list of eloquent model events and each model event has its own function. it's very helpful. I love laravel eloquent model events.
- 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.
Sometimes, we need to add a unique number or create a slug from the title before creating a record you need to update these fields at a time we can use those times of the event. the same thing when you update records then also you have to update the slug and might when removing records then also you have to delete child records. so the event is very helpful and I will say you must have to use it when you need this type of situation.
I will explain a few important events with examples 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 a one-by-one examples with output in the log file so you can easily understand, how model events work.
Create Product Model with events
Here, we will create a product model with events. so let's create and put bellow code:
app/Models/Product.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Log;
use Str;
class Product extends Model
{
use HasFactory;
protected $fillable = [
'name', 'slug', 'detail'
];
/**
* 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->name);
});
/**
* 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
app/Http/Controllers/ProductController.php
<?php
namespace App\Http\Controllers;
use App\Models\Product;
use Illuminate\Http\Request;
class ProductController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
Product::create([
'name' => 'silver',
'detail' => 'This is silver'
]);
dd('done');
}
}
Output Log File:
[2020-10-20 14:37:26] local.INFO: Creating event call: {"name":"silver","detail":"This is silver"}
[2020-10-20 14:37:26] local.INFO: Created event call: {"name":"silver","detail":"This is silver","slug":"silver","updated_at":"2020-10-20T14:37:26.000000Z","created_at":"2020-10-20T14:37:26.000000Z","id":5}
Update Record: Updating and Updated Event
app/Http/Controllers/ProductController.php
<?php
namespace App\Http\Controllers;
use App\Models\Product;
use Illuminate\Http\Request;
class ProductController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
Product::find(5)->update([
'name' => 'silver updated',
'detail' => 'This is silver'
]);
dd('done');
}
}
Output Log File:
[2020-10-20 14:39:04] local.INFO: Updating event call: {"id":5,"name":"silver updated","detail":"This is silver","created_at":"2020-10-20T14:37:26.000000Z","updated_at":"2020-10-20T14:37:26.000000Z","slug":"silver"}
[2020-10-20 14:39:04] local.INFO: Updated event call: {"id":5,"name":"silver updated","detail":"This is silver","created_at":"2020-10-20T14:37:26.000000Z","updated_at":"2020-10-20T14:39:04.000000Z","slug":"silver-updated"}
Delete Record: Deleted Event
app/Http/Controllers/ProductController.php
<?php
namespace App\Http\Controllers;
use App\Models\Product;
use Illuminate\Http\Request;
class ProductController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
Product::find(5)->delete();
dd('done');
}
}
Output Log File:
[2020-10-21 03:14:45] local.INFO: Deleted event call: {"id":5,"name":"silver updated","detail":"This is silver","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.
I hope it can help you...
Hardik Savani
I'm a full-stack developer, entrepreneur and owner of ItSolutionstuff.com. I live in India and I love to write tutorials and tips that can help to other artisan. I am a big fan of PHP, Laravel, Angular, Vue, Node, Javascript, JQuery, Codeigniter and Bootstrap from the early stage. I believe in Hardworking and Consistency.
We are Recommending you
- Laravel 10 JQuery UI Ajax Autocomplete Search Example
- Laravel 10 REST API with Passport Authentication Tutorial
- How to Get Last Executed Query in Laravel 10?
- Laravel 10 Select2 Ajax Autocomplete Search Example
- Laravel 10 Get Client IP Address Example
- Laravel 10 Cron Job Task Scheduling Tutorial
- Laravel 10 Clear Cache of Route, View, Config, Event Commands
- Laravel 10 Send Email using Queue Example
- Laravel 10 Change Date Format Examples
- Laravel 10 Yajra Datatables Tutorial Example
- Laravel 10 REST API Authentication using Sanctum Tutorial
- Laravel 10 Ajax Request Example Tutorial
- Laravel 10 Database Seeder Example Tutorial
- Laravel 10 Auth with Inertia JS Jetstream Example