*/ use HasFactory; protected $fillable = [ 'released_on', 'release_tag', 'category', 'text', 'status', 'source_key', 'commit_subject', 'review_note', 'article_worthy', 'published_at', 'reviewed_by_user_id', ]; protected function casts(): array { return [ 'released_on' => 'date', 'category' => ChangelogCategory::class, 'status' => ChangelogStatus::class, 'article_worthy' => 'boolean', 'published_at' => 'datetime', ]; } /** * @return BelongsTo */ public function reviewer(): BelongsTo { return $this->belongsTo(User::class, 'reviewed_by_user_id'); } /** * @param Builder $query */ public function scopePublished(Builder $query): void { $query->where('status', ChangelogStatus::Published->value); } /** * Öffentlicher Text: Sicherheit immer nur als Sammelzeile (E5), egal * was im Entwurf steht. */ public function publicText(): string { return $this->category === ChangelogCategory::Security ? ChangelogCategory::SECURITY_LINE : $this->text; } }