首页 > 解决方案 > 计算循环内的关系

问题描述

我在“表单”和“字段”之间有一个多对多的关系,在我的中间表上我有一个名为“顺序”的附加列,以便我可以编辑表单上字段的顺序。

我有此代码用于向表单添加字段。它需要一个字段 id 数组,然后遍历它们并将它们附加到表单中。但是一旦附加了字段,当我 dd 时,它们的顺序都是 0?

我认为在 foreach 的第一次迭代中,订单将 = 0,而第二次将 = 1?

假设我在之前没有任何字段的表单中添加了 2 个字段。

 public function store(Request $request)
    {
        $form = Form::findOrFail($request->formId);

        foreach($request->fieldIds as $field) {
            $form->fields()->attach($field, ['order' => count($form->fields)]);
        }
        dd($form->fields()->get());
    }

标签: laravellaravel-8

解决方案


我建议这样做:

 public function store(Request $request)
{
    $form = Form::findOrFail($request->formId);

    foreach($request->fieldIds as $order=>$field) {
        $form->fields()->attach($field, ['order' => $order]);
    }
}

推荐阅读