New

Just launched: Vueblocks, a brand-new search engine for Vue packages! Explore Vueblocks →

danielemontecchi/laravel-userstamps

Automatically track the user who created, updated, or deleted Eloquent models in Laravel, with database macros and model traits.
1,018 1
Install
composer require danielemontecchi/laravel-userstamps
Latest Version:v1.1.0
PHP:^8.2
Laravel:10 – 13
License:MIT
Last Updated:Mar 27, 2026
Links: GitHub  ·  Packagist
Maintainer: danielemontecchi

Laravel Userstamps

Latest Version on Packagist Total Downloads License: MIT GitHub Tests Action Status Coverage PHPStan Quality Gate Status Maintainability Rating Documentation

Laravel Userstamps is a lightweight, plug-and-play package to automatically track the user who created, updated, or deleted an Eloquent model in Laravel.

Much like Laravel's timestamps() for created_at and updated_at, this package handles the created_by, updated_by, and deleted_by fields in a clean and consistent way.


🛠️ Installation

composer require danielemontecchi/laravel-userstamps

Laravel automatically registers the service provider via package discovery.


⚙️ Usage in Eloquent models

Add the HasUserstamps trait to any model where you want userstamps to be tracked:

use DanieleMontecchi\LaravelUserstamps\Traits\HasUserstamps;

class Post extends Model
{
    use HasUserstamps;
}

The trait automatically listens to Eloquent model events (creating, updating, deleting, restoring) and fills the appropriate *_by fields only if they exist in the database.


🧱 Migration helpers

The package provides expressive migration macros:

➕ Add created_by and updated_by

$table->userstamps();

➕ Add deleted_by (similar to softDeletes())

$table->softDeletesBy();

🧩 Full example

Schema::create('posts', function (Blueprint $table) {
    $table->id();
    $table->string('title');

    $table->userstamps();       // created_by, updated_by
    $table->timestamps();       // created_at, updated_at
    $table->softDeletes();      // deleted_at
    $table->softDeletesBy();    // deleted_by
});

👤 User relations

The trait adds inverse relationships to the User model (or whatever model uses the IDs):

$post->creator;    // The user who created the model
$post->updater;    // The user who last updated the model
$post->destroyer;  // The user who deleted the model

🚫 Temporarily disable tracking

You can disable userstamping (e.g. during seeding, bulk import, or testing):

Post::disableUserstamps();

Post::create(['title' => 'Imported without tracking']);

Post::enableUserstamps();

🔧 Requirements

  • PHP 8.1+
  • Laravel 10.x, 11.x, 12.x, 13.x
  • A users table (or any custom user model)

Note: field names are not hardcoded. The macros can be customized or replaced as needed.


✅ Why this package?

  • ✔️ Laravel-like API: userstamps() and softDeletesBy()
  • ✔️ Zero configuration
  • ✔️ Only acts on existing columns
  • ✔️ Soft delete & restore support
  • ✔️ Great for audits, logs, traceability

License

Laravel Userstamps is open-source software licensed under the MIT license. See the LICENSE.md file for full details.


Made with ❤️ by Daniele Montecchi

Related Packages

richan-fongdasen/eloquent-blameable

Blameable behavior implementation for your Eloquent Model in Laravel

238,341 34
astalpaert/laravel-blamable

Laravel Eloquent models blamable

44,847 2
rmasters/culpa

Adds Blameable support to Eloquent models in Laravel

2,161 24
richan-fongdasen/eloquent-repository

An Eloquent Repository implementation in Laravel

13,908 0

Version History

Version Released PHP Laravel License
v1.1.0 ^8.2 ^10.0|^11.0|^12.0|^13.0 MIT
v1.0.0 ^8.1 || ^8.2 || ^8.3 || ^8.4 ^10.0|^11.0|^12.0 MIT