当前位置: 首页 > 知识库问答 >
问题:

Laravel-根据数组同步数据透视表

禄仲渊
2023-03-14

我正在制作一个VueJS表单,用户可以在其中编辑一个步骤。一个步骤可以有许多父产品。逻辑是一个步骤可以属于多个产品。我有一个名为products、product_step(透视表)和steps的表。

当用户第一次加载页面时,该数组将填充此stap的父产品。

此阵列将根据用户决定在前端执行的操作进行更改。假设他们希望产品n不再具有此步骤的访问权限。在这种情况下,产品将从阵列中删除。

我面临的问题是,我不知道如何将数据透视表与此行为同步。

情景

假设用户加载页面,并且此步骤的父产品是[101102]。步骤的ID为2。数据透视表需要以下内容

所以假设用户决定删除产品101并添加产品104106。数组将看起来像这样[101, 104, 106]但是透视表也需要同步这种行为。我怎样才能做到这一点?

我尝试过类似的方法,但这种方法只能将其分离,而不能在必要时添加

public function update(Request $request, $id)
    foreach($request->data['parentProducts'] as $configurableProduct) {
      $product = Product::find($configurableProduct['id']);
      $product->steps()->detach($id);
    }
}

产品模型

 /**
     * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
     */
    public function steps()
    {
        return $this->belongsToMany(Step::class, 'product_step', 'product_id', 'step_id')->orderBy('order');
    }

共有1个答案

曹钊
2023-03-14

翻转你的逻辑不会解决你的问题。这将分离并添加给定步骤上的产品,我猜这是用户实际上正在编辑的?

$step = Step::find($id);
$step->products()->sync(collect($request->data['parentProducts'])->pluck('id'));

加分项,你也可以使用模型绑定,为你的步骤,使代码更加干净。要求将路由参数称为步骤。

public function update(Request $request, Step $step)
    $step->products()->sync(collect($request->data['parentProducts'])->pluck('id'));
}
 类似资料:
  • 我在我的透视表中有一个额外的用户名列,如何将用户名与角色同步? pivot表 我需要在字段中同步用户名 这是更新功能,我在其中添加了 这是我的中的关系 下面是表迁移 这是我在转储请求并验证用户名时得到的结果 转储代码

  • 事实上,我的问题很简单,但我找不到任何答案。 我使用的是Laravel Elotent,我有3张桌子: 一个数据透视表叫做: 我已经从我的公司对象中获得了,我正在尝试获取

  • 问题内容: Laravel官方文档具有以下功能: 您还可以将其他数据透视表值与给定的ID相关联: 在后一个示例中,仅添加了一个枢轴行。我不明白的是,如果要同步的行多,如何关联其他数据透视表记录? 提前致谢。 问题答案: 为了与自定义数据透视表一起使用多个模型,您需要: 就是 编辑 回答评论:

  • 问题内容: 用户模型: 职位模型: 在表单提交时,我有两个数组: 使用 可以按预期将position_user表与用户和相应的位置ID同步。 但是我不知道如何填充多余的字段(“ company_id”) 这是我期望的工作方式: 我已经阅读了手册,但是我只是看不到如何处理这些数组,因为手册中的示例似乎与以下情况有关:要填充的额外字段不是多个项目的数组: 我尝试使用此答案 合并两个数组: 并获得$ s

  • A 数据透视表介绍 B.1 什么是数据透视表? 数据透视表是一种可以快速汇总、分析大量数据表格的交互式工具。使用数据透视表可以按照数据表格的不同字段从多个角度进行透视,并建立交叉表格,用以查看数据表格不同层面的汇总信息、分析结果以及摘要数据。使用数据透视表可以深入分析数值数据,以帮助用户发现关键数据,并做出有关企业中关键数据的决策。 数据透视表是针对以下用途特别设计的:以友好的方式,查看大量的数据

  • D.1 组合日期数据 前面我们使用地区、城市、产品名称、雇员等字段作为分类字段查看数据汇总信息。那么如果我们按照订单日期做为分类字段来查看汇总信息会是什么样呢?将“订单日期”字段拖动到“行标签”区域,所生成数据透视表如下图所示:此数据透视表显示的是每一天的金额合计,显然不是我们所期望的结果。如果我们希望按照年、季度、月份等来计算金额的汇总信息又该如何实现呢?可以直接在日期字段上单击鼠标右键,选择“