Laravel Model Created Event Example

By Hardik Savani November 5, 2023 Category : Laravel

Hi Developer,

This article goes in detailed on laravel model created event. We will look at an example of how to use model created event in laravel. I explained simply about how to use created event in laravel model. you can understand a concept of laravel created event model. Follow the below tutorial step of laravel created event in model.

In Laravel, you can use model events to perform actions when a model is being created, updated, deleted, etc. To demonstrate how to use the `created` event in a Laravel model, I'll provide you with an example. Let's assume you have a `Post` model, and you want to automatically call event after create post record. You can do this using the `created` event.

I will give you simple example of how to call created event in from model. so, let's see the very simple example:

Create Post Model:

1. Create the `Post` model using the Artisan command:

php artisan make:model Post

2. In the generated `Post` model, you can define the `created` event using the `static::created` method. Here's an example:

app/Models/Post.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

use Illuminate\Support\Str;

class Post extends Model

{

protected $fillable = ['title', 'content', 'slug'];

/**

* Write code on Method

*

* @return response()

*/

protected static function boot()

{

parent::boot();

static::creating(function ($post) {

info('Creating event call: '.$post);

$post->slug = Str::slug($post->title);

});

static::created(function ($post) {

info('Created event call: '.$post);

});

}

}

Create Post Record:

In this example, when a new `Post` model is being created, the `creating` event is triggered, and we use a closure to generate a slug based on the `title` attribute. We're using the `Str::slug` method from Laravel to create a URL-friendly slug from the title.

3. Now, when you create a new `Post` instance and save it, the `creating` event will automatically set the slug for you. Here's how you can create a new post:

app/Http/Controllers/PostController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Models\Post;

class PostController extends Controller

{

/**

* Display a listing of the resource.

*

* @return \Illuminate\Http\Response

*/

public function index(Request $request)

{

$post = Post::create([

'title' => 'This is Testing',

'content' => 'This is a Testing'

]);

dd($post);

}

}

Now, you can run following controller code and you will find following log for calling creating event and created event as like the below:

Output:

[2023-10-20 14:37:26] local.INFO: Creating event call: {"title":"This is Testing","content":"This is a Testing"}

[2023-10-20 14:37:26] local.INFO: Created event call: {"title":"This is Testing","content":"This is a Testing","slug":"this-is-

testing","updated_at":"2023-10-20T14:37:26.000000Z","created_at":"2023-10-20T14:37:26.000000Z","id":1}

I hope it can help you...

Tags :
Shares