React to model lifecycle events with Observer classes — creating, created, updating, deleted.
Model Observers
php artisan make:observer PostObserver --model=Post
class PostObserver {
public function creating(Post $post): void {
$post->slug = Str::slug($post->title);
$post->user_id = auth()->id();
}
public function created(Post $post): void {
Cache::forget("posts.all");
event(new PostCreated($post));
}
public function updating(Post $post): void {
if ($post->isDirty("title")) {
$post->slug = Str::slug($post->title);
}
}
public function deleted(Post $post): void {
Storage::delete($post->image);
}
}
// Register — in AppServiceProvider::boot()
Post::observe(PostObserver::class);