Laravel 9 Model Events Example Tutorial

Now, let’s see the post of laravel 9 model events example. I would like to show you model events in laravel 9. This article goes in detail on eloquent model events laravel 9. we will help you to give examples of laravel 9 model events created.

Laravel provide list of eloquent model events and each model event have it’s 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.

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.

Laravel 9 Model Events Example Tutorial

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.

Create Product Model with events

Here, we will create product model with events. so let’s create and put bellow code:

app/Models/Product.php

<?php

namespace AppModels;

use IlluminateDatabaseEloquentFactoriesHasFactory;

use IlluminateDatabaseEloquentModel;

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);

});

}

}

.medrectangle-4-multi-155{border:none!important;display:block!important;float:none;line-height:0;margin-bottom:15px!important;margin-left:0!important;margin-right:0!important;margin-top:15px!important;max-width:100%!important;min-height:250px;min-width:300px;padding:0;text-align:center!important}

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 AppHttpControllers;

use AppModelsProduct;

use IlluminateHttpRequest;

class ProductController extends Controller

{

/**

* Display a listing of the resource.

*

* @return IlluminateHttpResponse

*/

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 AppHttpControllers;

use AppModelsProduct;

use IlluminateHttpRequest;

class ProductController extends Controller

{

/**

* Display a listing of the resource.

*

* @return IlluminateHttpResponse

*/

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 AppHttpControllers;

use AppModelsProduct;

use IlluminateHttpRequest;

class ProductController extends Controller

{

/**

* Display a listing of the resource.

*

* @return IlluminateHttpResponse

*/

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…

1 thought on “Laravel 9 Model Events Example Tutorial”

Leave a Comment