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

如何在Laravel中与额外的字段同步枢轴?

戚阳
2023-03-14

我需要一些帮助来解决拉威尔的一个问题。我有三张桌子:

  • 颗粒
  • 物种(有树)
  • specie_pellet(这是透视表)

specie_颗粒表是颗粒组成的轴心,有一个额外字段,称为percentuale(百分比)。显然,这种关系在物种类中属于遗传性,在颗粒类中详细地说,在颗粒类中属于遗传性:

// Imposto la relazione con le Specie
public function specie()
{
    return $this->belongsToMany(Specie::class)->withPivot('percentuale');
}

详细种类类别:

// Imposto la relazione con i Pellets
public function pellets()
{
    return $this->belongsToMany(Pellet::class)->withPivot('percentuale');
}

要修改表格,请使用以下表格:

{!! Form::model($pellet, ['method' => 'PUT', 'route' => ['composizione.update', $pellet->id]]) !!}
<table class="table table-bordered">
    <thead>
    <th>Specie</th>
    <th>Percentuale</th>
    <th>Azione</th>
    </thead>
    <tbody>
    @foreach($pellet->specie as $specie)
        <tr>
            <td>{!! Form::select('specie[]', $listaSpecie, $specie->id, ['class' => 'form-control']) !!}</td>
            <td>
                <input type="text" class="form-control" name="percentuale[]" value="{{ $specie->pivot->percentuale }}">
            </td>
            <td><a class="btn btn-danger" href="{{ url('composizione/pellet/elimina/id/' . $pellet->id . '/specie/' . $specie->id) }}">Elimina</a> </td>
        </tr>
    @endforeach
    </tbody>
</table>
{!! Form::submit('Aggiorna Composizione', ['class' => 'btn btn-success']) !!}
{!! Form::close() !!}

请求传递到路由

Route::put('composizione/pellet/update/{id}', 'PelletController@updateComposizione')->name('composizione.update');

最后我拿到了控制

public function updateComposizione(\App\Http\Requests\ComposizioneUpdateRequest $request, $id)
{
    $pellet = Pellet::find($id);
    $specie = Input::get('specie');
    $percentuali = Input::get('percentuale');

    $pellet->specie()->sync([$specie => ['percentuale' => $percentuali]]);

    return redirect('admin/pellets/')->with('ok_success', 'Composizione aggiornata correttamente');
}

但是我得到了这个错误:非法的偏移类型

in PelletController.php line 94
at HandleExceptions->handleError(2, 'Illegal offset type', '/srv/users/serverpilot/apps/laraweb/app/Http/Controllers/PelletController.php', 94, array('request' => object(ComposizioneUpdateRequest), 'id' => '5', 'pellet' => object(Pellet), 'specie' => array('1', '7'), 'percentuali' => array('50', '50'))) in PelletController.php line 94
at PelletController->updateComposizione(object(ComposizioneUpdateRequest), '5')
at call_user_func_array(array(object(PelletController), 'updateComposizione'), array(object(ComposizioneUpdateRequest), 'id' => '5')) in Controller.php line 55
...

有人能帮我理解吗?非常感谢,我的英语很抱歉。我是意大利人;)

共有1个答案

江天宇
2023-03-14

我建议你回顾Laravel教程中的表单,并重新考虑这种方法,即选择可能不是最好的方法。选择不是解决这个问题的最佳方法。

尝试这样做:

@foreach($pellet->specie as $specie)
     {!! Form::open(["url" => "composizione/pellet/update/".$pellet->id, "method" => "PUT"]) !!}
     <tr>
        <td>
            <input type="hidden" name="specie" value={{$specie->id}} />
            <input type="text" class="form-control" name="percentuale" value="{{ $specie->pivot->percentuale }}">
        </td>
        <td><inpyt type="submit" class="btn btn-danger">Elimina</a> </td>
    </tr>
   {!! Form::close() !}}
@endforeach

其余的可能会起作用。这里发生的事情是,您将同时更新单个物种/百分比组合,而不是多个。

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

  • 我是新手,当我使用morphia java mongodb时,我有一个问题。我有“新闻”数据库在mongodb中的收藏是“文章”的一个例子: 在不丢失数据的情况下更新集合的最快方法是什么?如何在将这个文章类映射到MongoDB时忽略额外的字段? 谢谢

  • 问题内容: 我有这两个课(表) 还有这个: 运行此代码后,在数据库(student_course)中创建了一个额外的表,现在我想知道如何在该表中添加额外的字段,例如(Grade,Date和…(我的意思是student_course表)),我看到了一些解决方案,但我不喜欢它们,而且我对它们有一些问题: 第一个样品 问题答案: 如果在链接表(STUDENT_COURSE)上添加额外的字段,则必须根据s

  • 嗨,我是ElasticSearch的新手,我正在努力从ElasticSearch的响应中删除所有额外字段。请参见以下回复: 上面你可以看到响应中有一些附加字段,如_index、_type、_score、max_score等。我按照ElasticSearchresponse_filtering指南删除了这些字段,但对我不起作用。我还将filter_path参数传递给请求0.0.0.0:5000/v4

  • 页面 提交表单时,我想将值附加到,因为表单不包含的输入字段。并且post\u id的comment表中的列名被称为,创建注释的路径是 有什么想法吗?谢谢

  • 我试图自定义laravel认证注册。我在表格和表格中添加了父亲姓名字段。但是父亲姓名字段不是必需的。我在registercontroller.php和用户模型中也添加了这个字段。然后,如果提交的形式与所有字段然后数据插入成功,但如果我提交的形式没有父亲的名称字段(这是不需要的),然后错误来了:f_name提交不能为空。 如果我从fillable中删除f_name,则f_name不会保存。 方法。p