gpt4 book ai didi

php - Laravel 同步/附加标签

转载 作者:行者123 更新时间:2023-12-04 16:11:03 25 4
gpt4 key购买 nike

我正在研究 Laravel 上的标签功能,并继续学习这个很棒的教程:https://laracasts.com/series/laravel-5-fundamentals/episodes/22?autoplay=true

但我对同步/附加功能有疑问。当我尝试附加时,它是否只更新了 post_tag 表,而不是标签表。然后所有帖子都指向 ID 为 0 的不存在的标签。

保存看起来像:

...
if ($request->get('tags')) {
$tagsarr = array_slice(array_unique($request->get('tags')), 0, (int)siteSettings('tagsLimit'));
$post->tags()->attach($tagsarr);
}
$post->save();

return $post;

当我 dd($tagsarr); 我有:

array:3 [▼
0 => "tag1"
1 => "tag2"
2 => "tag3"
]

帮助我将代码更改为:

...
$post->save();

if ($request->get('tags')) {
$tagsarr = array_slice(array_unique($request->get('tags')), 0, (int)siteSettings('tagsLimit'));
$tagIds[] = Tag::firstOrCreate($tagsarr)->id;

$post->tags()->attach($tagIds);
}

return $post;

解决方案:

$post->save();

if ($request->get('tags')) {
$tagsarr = array_slice(array_unique($request->get('tags')), 0, (int)siteSettings('tagsLimit'));

foreach($tagsarr as $tagitem) {
$tagIds[] = Tag::firstOrCreate(['tag' => $tagitem])->id;
}

$post->tags()->attach($tagIds);
}

return $post;

最佳答案

attach() 不应该对 tags 表做任何事情。如果您正在创建新帖子,您应该先保存对象:

$post->save();

然后才使用 attach()

此外,$tagsarr 应该包含标签的 ID,但不包含标签名称。

关于php - Laravel 同步/附加标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41396270/

25 4 0