![]()
WARNING You're browsing the documentation for an upcoming version of Laravel Auditable. The documentation and features of this release are subject to change.
Usage
To use Laravel Auditable, update your model's migration to add created_by and updated_by fields, then use the AuditableTrait on your model.
Creating a Migration
Add the auditable fields using the auditable() blueprint macro:
use Illuminate\Database\Migrations\Migration;use Illuminate\Database\Schema\Blueprint;use Illuminate\Support\Facades\Schema; return new class extends Migration{ public function up(): void { Schema::create('posts', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('content'); $table->auditable(); $table->timestamps(); }); } public function down(): void { Schema::dropIfExists('posts'); }};
This creates:
created_by- unsigned big integer (nullable, indexed)updated_by- unsigned big integer (nullable, indexed)
::: tip Blueprint Macros Learn more about available schema macros in the Auditable Blueprint documentation. :::
Creating a Model
Use AuditableTrait on your model:
namespace App\Models; use Illuminate\Database\Eloquent\Model;use Yajra\Auditable\AuditableTrait; class Post extends Model{ use AuditableTrait;}
How It Works
Once the trait is applied, Laravel Auditable automatically:
- On Create: Sets
created_byandupdated_byto the authenticated user's ID - On Update: Sets
updated_byto the authenticated user's ID
If no user is authenticated, the fields are set to null by default.
::: tip Need Soft Delete Tracking? If you need to track who deleted records, see Soft Deletes Auditable for setup instructions. :::
Quick Reference
| Property / Method | Description |
|---|---|
$post->creator |
BelongsTo relationship - the user who created the record |
$post->updater |
BelongsTo relationship - the user who last updated the record |
$post->created_by |
The ID of the user who created the record |
$post->updated_by |
The ID of the user who last updated the record |
$post->created_by_name |
Accessor - full name of the creator |
$post->updated_by_name |
Accessor - full name of the updater |
Post::owned() |
Query scope - filter records by authenticated user |
getQualifiedUserIdColumn() |
Returns the qualified created_by column name |
getCreatedByColumn() |
Returns the created_by column name |
getUpdatedByColumn() |
Returns the updated_by column name |
Retrieving Auditable Data
Access the creator and updater relationships:
$post = Post::find(1); // Get the user who created the post$creator = $post->creator; // Get the user who last updated the post$updater = $post->updater; // Get creator and updater names$creatorName = $post->created_by_name;$updaterName = $post->updated_by_name;