如何在laravel中将标签附加到morphMany关系?

时间:2020-01-23 09:14:28

标签: php laravel

我要在上载图像并为其创建模型时,添加用户选择的相关标签。 我现在就做,但是我认为这种方法不是最好的方法。 enter image description here enter image description here

1 个答案:

答案 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