Log Eloquent model changes to a designated logs table

1.3.2 2016-04-04 19:37 UTC

This package is auto-updated.

Last update: 2024-05-20 03:49:43 UTC


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.


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


Publish migration:

php artisan logger:init

Run migration:

php artisan migrate


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:


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


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.