我有两个表,一个是“ITEM”,第二个是mysql数据库中的“Composite Item”。我试图在复合项目表中为laravel中的单个记录插入多个项目ID。
其中一个逻辑我试图将多个项目id保存为逗号分隔值,例如“1,2,3,4”,并将该一个字段更新为相同的概念。但是当我从项目表中删除任何一个项目时,我遇到了问题。如果我从项目表中删除任何项目如何从复合项目表中的字符串项ID中删除相同的项目。例如,从项目表中删除了项目ID 3。
我也认为如果我为一对多关系创建新表,那么当我更新记录时如何更新记录。
答案 0 :(得分:0)
您肯定在寻找many-to-many关系,而不是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]);