繁体   English   中英

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

[英]laravel one to many record insert and update solution

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

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

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

你肯定找许多一对多的关系,而不是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]); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM