'array', 'meta' => 'array', 'requires_approval' => 'boolean', 'scheduled_at' => 'datetime', 'recurrence_occurrence_at' => 'datetime', 'approved_at' => 'datetime', 'posted_at' => 'datetime', 'next_retry_at' => 'datetime', ]; public function user(): BelongsTo { return $this->belongsTo(User::class); } public function recurringCampaign(): BelongsTo { return $this->belongsTo(SocialRecurringCampaign::class, 'recurrence_campaign_id'); } public function fullCaption(): string { $hashtags = collect($this->hashtags ?? []) ->map(fn ($item) => trim((string) $item)) ->filter() ->map(fn ($item) => str_starts_with($item, '#') ? $item : '#'.$item) ->implode(' '); return trim($this->caption.($hashtags !== '' ? "\n\n{$hashtags}" : '')); } }