Laravel:如何为标记系统使用透视表
我想为帖子创建标签 例如,我创建了三个新标记,但在TaggablesTable中只提交了一行 标签表:Laravel:如何为标记系统使用透视表,laravel,tags,Laravel,Tags,我想为帖子创建标签 例如,我创建了三个新标记,但在TaggablesTable中只提交了一行 标签表: id | name | -------------- 1 | first| 2 | two | 3 | three| 标记表: tag_id|taggable_id|taggable_type ------------------------------- 3 | 1 |post public function store(Re
id | name |
--------------
1 | first|
2 | two |
3 | three|
标记表:
tag_id|taggable_id|taggable_type
-------------------------------
3 | 1 |post
public function store(Request $request)
{
$data = $request->all();
$post = Post::create($data);
if ($post && $post instanceof Post) {
$tags = $request->input('tags');
foreach ($tags as $tag){
$newTag =Tag::firstOrCreate(['name'=>$tag]);
$tags= $newTag->id;
}
$post->tags()->sync($tags);
return redirect()->back();
}
}
如何做到这一点?每次循环运行时都会覆盖标记。Map似乎是解决问题的更简单方法
$data = $request->all();
$post = Post::create($data);
$tags = collect($request->input('tags'))->map(function (string $tag) {
return Tag::firstOrCreate(['name'=>$tag])->id;
})->all();
$post->tags()->sync($tags);
return redirect()->back();
检查post是否是if语句中的post似乎是多余的。