Skip to content

Instantly share code, notes, and snippets.

@newtonjob
Created April 23, 2025 17:44
Show Gist options
  • Save newtonjob/d6e2a4632871d585a2e0f9fa6f1b1fc7 to your computer and use it in GitHub Desktop.
Save newtonjob/d6e2a4632871d585a2e0f9fa6f1b1fc7 to your computer and use it in GitHub Desktop.
<?php
namespace App\Models\Concerns;
use App\Models\User;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Facades\Auth;
trait HasAuthor
{
public static function bootHasAuthor(): void
{
static::creating(function(Model $model) {
$model->created_by = Auth::id();
});
static::updating(function(Model $model) {
$model->updated_by = Auth::id();
});
static::deleting(function(Model $model) {
if (in_array(SoftDeletes::class, class_uses($model))) {
$model->updated_by = Auth::id();
$model->save();
}
});
}
public function author(): BelongsTo
{
return $this->belongsTo(User::class, 'created_by');
}
public function editor(): BelongsTo
{
return $this->belongsTo(User::class, 'updated_by');
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment