belongsTo(User::class, 'user_id'); } public function wasReadBy(User $user): bool { return $user->announcements_last_read_at < $this->created_at; } public function getParsedBodyAttribute(): HtmlString { $environment = Environment::createCommonMarkEnvironment(); $environment->addExtension(new TableExtension); $converter = new CommonMarkConverter([ 'html_input' => 'escape', 'allow_unsafe_links' => false, ], $environment); return new HtmlString( $converter->convertToHtml($this->attributes['body']) ); } /** * {@inheritDoc} */ protected static function newFactory(): AnnouncementFactory { return new AnnouncementFactory; } }