【发布时间】:2016-12-30 12:28:24
【问题描述】:
我正在研究 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;
【问题讨论】: