first(); return $article; } public function sentenceIds(string $id): ?array { $article = $this->getRawById($id); if (empty($article->content)) { return null; } $sentenceIds = $this->extractBracesContent($article->content); return $sentenceIds; } /** * 提取字符串中 {{ }} 之间的内容 * * @param string $text * @return array */ public function extractBracesContent(string $text): array { preg_match_all('/\{\{\s*(.*?)\s*\}\}/', $text, $matches); return $matches[1] ?? []; } public function articlesInAnthology($anthologyId) { $inCollection = ArticleCollection::where('collect_id', $anthologyId) ->select('article_id') ->get()->toArray(); return array_map(fn($item) => $item['article_id'], $inCollection); } public function getArticle(string $id): array { $result = Article::where('uid', $id)->first(); if (!$result) { Log::warning("没有查询到数据 id={$id}"); return ['error' => "没有查询到数据 id={$id}", 'code' => 404]; } return [ 'data' => new ArticleResource($result), 'ok' => true ]; } }