A trait that adds createdBy and updatedBy user relations to your models
malhal/laravel-createdby is a Laravel package for a trait that adds createdby and updatedby user relations to your models.
It currently has 31 GitHub stars and 130 downloads on Packagist (latest version v1.0.0).
Install it with composer require malhal/laravel-createdby.
Discover more Laravel packages by malhal
or browse all Laravel packages to compare alternatives.
Last updated
A trait that adds createdBy and updatedBy user relations to your models.
First either update your database or add this to a migration for each model:
$table->unsignedInteger('created_by_id');
$table->unsignedInteger('updated_by_id');
$table->foreign('created_by_id')
->references('id')->on('users')
->onDelete('cascade');
$table->foreign('updated_by_id')
->references('id')->on('users')
->onDelete('cascade');
Finally in your model use:
use CreatedBy;
Now whenever a model is created or updated the createdBy and updatedBy relations will be automatically updated.
Unfortunately you shouldn't use this trait on the User model when using auto-increment keys, this is due to the limitation in MySQL that a field cannot reference the currently being inserted ID. However you can still make use of the Laravel-CreatedByPolicy with the workaround explained in that project. If you are using UUIDs for keys then this problem won't happen.
There are some extra scope features, e.g.
To add the join to retrieve the user info from the user table:
$query->withCreatedBy()
$query->withUpdatedBy()
To query based on a user:
$query->whereCreatedBy($user)
To temporarily disable updates on a save:
$model->saveWithoutCreatedBy();
If you would like to utilise this trait as part of a simple secuity model check out the extension of this trait Laravel-CreatedByPolicy.
PHP 5.6.4+ and Laravel 5.3+ are required.
To get the latest version of Laravel CreatedBy, simply require the project using Composer:
$ composer require malhal/laravel-createdby dev-master