dekate/model-logger

Table changes logger

0.1.4 2024-08-12 02:06 UTC

This package is not auto-updated.

Last update: 2024-10-21 03:26:54 UTC


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