matfish2 / eloquent-logger by matfish2

Log Eloquent model changes to a designated logs table
13,913
8
2
Package Data
Maintainer Username: matfish2
Maintainer Contact: matfish2@gmail.com (Matanya Fishaimer)
Package Create Date: 2016-01-30
Package Last Update: 2017-11-08
Home Page: https://packagist.org/packages/fish/eloquent-logger
Language: PHP
License: MIT
Last Refreshed: 2024-12-11 15:17:41
Package Statistics
Total Downloads: 13,913
Monthly Downloads: 22
Daily Downloads: 1
Total Stars: 8
Total Watchers: 2
Total Forks: 3
Total Open Issues: 2

Eloquent Logger

Latest Stable Version Total Downloads Latest Unstable Version License

This Laravel 5 package adds logging functionality to Eloquent models. All changes (create, update, delete) will be recorded in a designated logs table. Updates will record only dirty fields.

Installation

Add to composer.json:

"require": {
  "fish/eloquent-logger": "^1.0"
}

Update Composer from the Terminal:

composer update

Add the service provider to the the list of providers in your app.php

Fish\Logger\LoggerServiceProvider

Publish migration:

php artisan logger:init

Run migration:

php artisan migrate

Usage

Use the trait on relevant models. E.g:

namespace App;

use Illuminate\Database\Eloquent\Model;
use Fish\Logger\Logger;

class Post extends Model
{
  use Logger;
}

Retrieving logs for a model:

Post::find(1)->logs

Retrieving model from log (if the action was not deleted):

Fish\Logger\Log::find(1)->loggable;

Retrieve the state of the model at a certain point of time:

Post::find(1)->logs()->stateOn('2015-02-02 13:00:00');

To retrieve the state of a deleted model:

Fish\Logger\Log::entity(Post::class, 1)->stateOn('2016-01-01 12:00:00');

The model will be retrieved even if the passed timestamp occured after it was already deleted.

The Log contains the following properties:

  • user_id integer: User who did the action. if there is no authenticated user, set to null
  • action string: type of action - created, updated or deleted
  • before array: state of the model before the action. If the action is created set to null
  • after array: state of the model after the action. If the action is deleted set to null
  • created_at datetime: action's timestamp

Query helpers

  • wasCreated, wasUpdated or wasDeleted - filter by action.
  • between - filter by date range.

Example:

Post::find(1)->logs()
            ->wasUpdated()
            ->between('2015-01-01','2015-02-01')
            ->get();