我要在上载图像并为其创建模型时,添加用户选择的相关标签。 我现在就做,但是我认为这种方法不是最好的方法。
答案 0 :(得分:1)
您在Image和Tag之间有更多的关系,
因此,您可以像这样使用create method:
$tag_array = array();
foreach($tags as $tag) {
if(!is_numeric($tag)) {
$tag_array []= ['name' => $tag, 'user_id' => auth()->id];
}
}
// Use createMany with relationship
$image->tags()->createMany($tag_array);
此方法将创建许多标签并建立它们之间的关系。
或者,您可以使用saveMany()
:
$image->tags()->createMany(array(
new Tag(['name' => 'xxx', 'user_id' => 1]),
new Tag(['name' => 'xxx', 'user_id' => 2]),
...
));
如果您已经有一些标签存在。您可以像这样使用sync()
:
这仅用于多态多对多:
$image->tags()->sync($tag_ids); // attach or detach tag_ids
$image->tags()->sync($tag_ids, false); // Not detach previous relations, attaches new ones skipping existing tag_ids