carlosdev / model-change-logger
Laravel package to log create, update, and delete events in Eloquent models with JSON snapshots and user attribution.
Package info
github.com/Charlie100901/model-change-logger
pkg:composer/carlosdev/model-change-logger
Requires
- php: ^8.0
- illuminate/support: ^10.0 || ^11.0 || ^12.0 || ^13.0
Requires (Dev)
- orchestra/testbench: ^8.0 || ^9.0 || ^10.0
- phpunit/phpunit: ^10.0 || ^11.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Laravel library for recording changes (create, update, delete) in models.
Records JSON snapshots of changes, the responsible user, and the date of the change in a database table.
๐ฆ Installation
Add the package to your project via Composer:
composer require carlosdev/model-change-logger
Make sure you have PHP 8.0+ and Laravel 10 - 13.
๐ง Configuration
Publish and run migrations:
php artisan migrate
Use the trait in the model you want to audit:
use CarlosDev\ModelChangeLogger\Traits\TracksChanges; class JobOffer extends Model { use TracksChanges; }
(Optional) Audit only specific attributes: If you want to record only certain attributes, define the $auditFields property in your model:
protected array $auditFields = ['job_offer_status_id', 'title'];
๐งช Examples
Create
$post = Post::create([ 'title' => 'Hello World', 'content' => 'First post', ]);
Recorded values:
{
"event": "created",
"old_value": null,
"new_value": {
"title": "Hello World",
"content": "First post"
}
}
Update
$post->update(['title' => 'New title']);
Recorded values:
{
"event": "updated",
"old_value": {
"title": "Hello World"
},
"new_value": {
"title": "New title"
}
}
Delete
$post->delete();
Recorded values:
{
"event": "deleted",
"old_value": {
"title": "New title",
"content": "First post"
},
"new_value": null
}
๐ง What does it record?
- JSON payload with old/new values for changed attributes on update().
- JSON payload with all tracked attributes on create.
- Deletions (delete and forceDelete), saving a JSON snapshot of tracked attributes in old_value.
- Responsible user (Auth::id()).
- Affected model and ID.
- Date and time of the change.
๐ Structure of the model_changes table
| Column | Description |
|---|---|
| model_type | Class of the affected model (App\Models\X) |
| model_id | ID of the modified model |
| old_value | Previous value |
| new_value | New value |
| user_id | ID of the user who made the change |
| event | Type of event (updated, deleted, etc.) |
| changed_at | Date and time of the change |
โ Compatibility
- PHP: >= 8.0
- Laravel: ^10.0 - ^13.0
๐ฌ Contributions
Suggestions, improvements, and pull requests are welcome! ๐
This package is designed for projects that require change traceability without depending on complex auditing packages.
๐ License
MIT ยฉ CarlosDev