dekate / model-logger
Table changes logger
0.1.4
2024-08-12 02:06 UTC
Requires
- php: ^8.0.2
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Tracking any changes to model into its own table.
Table Of Contents
Installation
install the package
composer require dekate/model-logger
publish config and migration
php artisan vendor:publish --tag=model-logger
Usage
use Dekate\ModelLogger\LogModel Trait into your model
ex.
<?php namespace App\Models; use Dekate\ModelLogger\LogModel; use Illuminate\Database\Eloquent\Model; class MyModel extends Model { use LogModel; /** The rest of the code */ }
To disable log for specific operation in a single model.
Add protected $disableLog to your model.
Valid values are string composed of C (create), U (update), and D (delete).
class YourModel extends Model { use LogModel; // disable Create log protected $disableLog = "C"; }
class YourModel extends Model { use LogModel; // disable Create Delete protected $disableLog = "CD"; }
Gotchas
Relationship
The sync() operation in a relation cannot be tracked with this trait.
Thus, we're providing syncWithRelation as an alternative.
/** You can change */ $myModel->myRelation()->sync([]) /** To */ $myModel->syncWithRelation('myRelation', []);
User Id
Responsible user for the changes are tracked with auth()->id().
So, we're unable to track the user if auth it's empty or not being used.
What we cannot track
- Anything with mass operation except
syncas explained above such asinsertordeletewith query builder. - Any changes with raw queries