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

时间:2018-04-17 11:50:57

标签: php mysql laravel

我有两个表,一个是“ITEM”,第二个是mysql数据库中的“Composite Item”。我试图在复合项目表中为laravel中的单个记录插入多个项目ID。

其中一个逻辑我试图将多个项目id保存为逗号分隔值,例如“1,2,3,4”,并将该一个字段更新为相同的概念。但是当我从项目表中删除任何一个项目时,我遇到了问题。如果我从项目表中删除任何项目如何从复合项目表中的字符串项ID中删除相同的项目。例如,从项目表中删除了项目ID 3。

我也认为如果我为一对多关系创建新表,那么当我更新记录时如何更新记录。

1 个答案:

答案 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]);