'array', 'published_at' => 'datetime', ]; protected static function booted(): void { static::saving(function (Post $post) { if (blank($post->slug)) { $post->slug = Str::slug($post->title); } }); } public function scopePublished(Builder $query): Builder { return $query->whereNotNull('published_at')->where('published_at', '<=', now()); } public function getRouteKeyName(): string { return 'slug'; } protected function coverImageUrl(): Attribute { return Attribute::get(fn () => $this->cover_image ? Storage::disk('public')->url($this->cover_image) : null); } }