Laravel 循环中的关系计数

Laravel 循环中的关系计数,laravel,laravel-8,Laravel,Laravel 8,我在“表单”和“字段”之间有一个多对多关系,在我的中间表上,我有一个额外的名为“order”的列,这样我就可以编辑表单上字段的顺序 我有一个代码,用于向表单中添加字段。它获取一个字段ID数组,然后循环遍历它们并将它们附加到表单。但是一旦附加了字段,当我添加时,这两个字段的顺序都是0 我认为在foreach的第一次迭代中,顺序将=0,而在第二次迭代中,它将=1 假设我向一个以前没有任何字段的表单添加了2个字段 公共函数存储(请求$Request) { $form=form::findOrFail(

我在“表单”和“字段”之间有一个多对多关系,在我的中间表上,我有一个额外的名为“order”的列,这样我就可以编辑表单上字段的顺序

我有一个代码,用于向表单中添加字段。它获取一个字段ID数组,然后循环遍历它们并将它们附加到表单。但是一旦附加了字段,当我添加时,这两个字段的顺序都是0

我认为在foreach的第一次迭代中,顺序将=0,而在第二次迭代中,它将=1

假设我向一个以前没有任何字段的表单添加了2个字段

公共函数存储(请求$Request)
{
$form=form::findOrFail($request->formId);
foreach($request->fieldid作为$field){
$form->fields()->attach($field,['order'=>count($form->fields)]);
}
dd($form->fields()->get());
}

我建议这样做:

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

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

经过更多的尝试和错误,这似乎是可行的

公共函数存储(请求$Request)
{
$form=form::findOrFail($request->formId);
foreach($request->fieldid作为$field){
$form->fields()->attach($field,['order'=>$form->fields()->count()]);
}
}
在这里尝试一下:


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

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

我认为如果我一次将所有字段添加到表单中,这种方法会起作用。但是,如果我稍后向表单添加另一个字段,则新字段的顺序将为0?