dekate / model-logger
Table changes logger
Installs: 52
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:lirary
Requires
- php: ^8.0.2
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
sync
as explained above such asinsert
ordelete
with query builder. - Any changes with raw queries