carlosdev/model-change-logger

Laravel package to log create, update, and delete events in Eloquent models with JSON snapshots and user attribution.

Maintainers

Package info

github.com/Charlie100901/model-change-logger

Issues

pkg:composer/carlosdev/model-change-logger

Statistics

Installs: 11

Dependents: 0

Suggesters: 0

Stars: 4

v2.0.0 2026-03-31 07:02 UTC

This package is not auto-updated.

Last update: 2026-03-31 07:13:01 UTC


README

CI

Leer en Espanol

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