Tracking any changes to model into its own table.
install the package
composer require dekate/model-logger
publish config and migration
php artisan vendor:publish --tag=model-logger
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";
}
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', []);
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.
- Anything with mass operation except
sync
as explained above such asinsert
ordelete
with query builder. - Any changes with raw queries