Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php laravel一对多记录插入和更新解决方案_Php_Mysql_Laravel - Fatal编程技术网

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

Php laravel一对多记录插入和更新解决方案,php,mysql,laravel,Php,Mysql,Laravel,我有两个表,一个是“ITEM”,第二个是mysql数据库中的“Composite ITEM”。我试图在复合项表中为laravel中的一条记录插入多个项id 其中一个逻辑是,我尝试将多个条目id保存为逗号分隔的值,例如“1,2,3,4”,并将该字段更新为相同的概念。但当我从item表中删除任何一项时,我遇到了问题。如果我从item表中删除了任何一个项,我如何才能从复合item表中的stringitem id中删除相同的项。例如,我从item表中删除了item id 3 我还想,如果我为一对多关系创

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

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


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

您肯定是在寻找关系,而不是
一对多
。Laravel具有生成和维护多对多关系的优秀功能

  • 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]);
    

使用foreach循环保存复合项。一个项是否可以是多个复合项的一部分?@KuldeepMishra我可以使用foreach循环添加复合项。有什么方法可以更新复合项吗?@SakiburRahman基表是项表。复合项依赖于项表。项目表不依赖于复合项目。是的,两个单独的复合项目可以组成相同的项目吗?谢谢您的回答。你能不能把上面的事情解释得尽可能广泛一些,就像我没用过一样。例如,当我添加记录时,我选择了第1,2项,然后我将更新记录,我选择了第1,2,4项,然后我将如何执行更新操作?我编辑了我的回复,以进行详细说明。如果您对答案感到满意或认为它解决了您的问题,请不要忘记接受答案,这是一种常见的堆栈溢出行为,有助于更好地理解问答echosystem.Welcome。我的荣幸:)您好,我对jquery select2插件有一个问题。你能帮我吗?