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 `creating` 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 set a slug for a post before it is created. You can do this using the `creating` event.
I will give you simple example of how to call creating event in from model. so, let’s see the very simple example:
1. Create the `Post` model using the Artisan command:
php artisan make:model Post
2. In the generated `Post` model, you can define the `creating` event using the `static::creating` method. Here’s an example:
<?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);
});
}
}
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);
}
}