Skip to content

dekate/model-logger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Model Logger

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 as insert or delete with query builder.
  • Any changes with raw queries