Я пытаюсь добавить функцию добавления тега для сообщения в laravel. Это код обновления:
public function update(PostRequest $request, $id)
{
$post = Post::find($id);
$post->update($request->all());
if ($request->tags) {
$tagNames = explode(',', $request->tags);
$tagIds = [];
foreach ($tagNames as $tagName) {
$tagCount = Tag::where('name', '=', $tagName)->count();
if ($tagCount < 1) {
$tag = $post->tags()->create(['name' => $tagName]);
} else {
$post->tags()->detach();
$tag = Tag::where('name', $tagName)->first();
}
$tagIds[] = $tag->id;
}
$post->tags()->sync($tagIds);
}
return back()->with('success', 'Successfully');
}
Он хорошо работает со сводной таблицей, это было решено.
Моя проблема заключается в таблице тегов. Когда я удаляю все теги и повторно набираю новый тег или существующий тег, все работает.
Но когда я не изменяю или сохраняю старый тег и продолжаю добавлять новый тег, это вызовет логическую ошибку. Он автоматически добавит запись в таблицу тегов. Например: у моего поста 3 тега: test1, test2, test3. Я сохраняю его и добавляю тег: test4, затем в тег таблицы автоматически добавляются теги: test2, test3, test4.
Есть ли решение моей проблемы? Где я ошибся? Я потратил на это почти 2 дня. Я не хочу использовать пакет. Голосуйте за полезный ответ.
sync
в любом случае. - person shukshin.ivan   schedule 19.08.2017