From 86effba07592693f01f0e1890d8a3b9b8d79118d Mon Sep 17 00:00:00 2001 From: gouki Date: Mon, 12 Oct 2026 12:44:39 +0000 Subject: [PATCH] fix(import): dedupe tags via Tag::findFromString (name is JSON translatable) --- app/Console/Commands/SablogImport.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/Console/Commands/SablogImport.php b/app/Console/Commands/SablogImport.php index eaef55a..3d00897 100644 --- a/app/Console/Commands/SablogImport.php +++ b/app/Console/Commands/SablogImport.php @@ -340,7 +340,9 @@ class SablogImport extends Command continue; } - $tag = Tag::query()->where('name', $tagName)->where('type', 'post')->first(); + // spatie/tags 的 name 是 JSON 翻译字段,直接 where('name', ...) 匹配不到, + // 必须用 findFromString(内部按 locale 查询 JSON 键),否则每次导入都重复建标签 + $tag = Tag::findFromString($tagName, 'post'); if (! $tag) { $tag = new Tag(['name' => $tagName, 'type' => 'post']); $tag->slug = SlugGenerator::make($tagName, 'tags', 'slug', fallback: 'tag-'.crc32($tagName));