'datetime', 'approved_at' => 'datetime']; protected static function booted(): void { static::creating(function (Post $post) { $post->slug ??= Str::slug($post->title); $post->author_id ??= auth()->id(); }); } public function author(): BelongsTo { return $this->belongsTo(User::class, 'author_id'); } public function reviewer(): BelongsTo { return $this->belongsTo(User::class, 'reviewed_by'); } public function approver(): BelongsTo { return $this->belongsTo(User::class, 'approved_by'); } public function scopePublished($query) { return $query->where('status', 'published') ->whereNotNull('published_at') ->where('published_at', '<=', now()); } }