laravel一对多记录插入和更新解决方案

b1zrtrql  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(263)

我有两个表,一个是“item”,第二个是mysql数据库中的“composite item”。我正在尝试为laravel中的一条记录在复合项表中插入多个items id。
其中一个逻辑是我尝试将多个items id保存为逗号分隔的值,例如“1,2,3,4”,并将该字段更新为相同的概念。但当我从item表中删除任何一个项时,我遇到了问题。如果我从item表中删除了任何一个项,那么如何从复合项表中的string item id中删除相同的项。例如,我从item表中删除了item id 3。
我还想,如果我为一对多关系创建新表,那么在更新记录时如何更新记录。

bjp0bcyl

bjp0bcyl1#

你肯定是在寻找多对多的关系,不是吗 one-to-many . laravel具有生成和维护 many-to-many 关系。
这个 attach/detach 方法用于关系中的单个或多个插入或删除。例如,如果要向复合项添加项数组([1,2]),可以使用 attach 比如:

$compositeItem->items()->attach([1,2]);

分离也是如此:

$compositeItem->items()->detach([1,2]);

这个 sync 方法用于更新现有记录。 Sync 有点棘手,工作原理如下:
sync方法接受要放置在中间表上的id数组。任何不在给定数组中的ID都将从中间表中删除。
比如,如果你想删除2,插入3,你可以使用 sync 这样地:

$compositeItem->items()->sync([1,3]);

相关问题