Laravel 多对多表单绑定

Laravel 多对多表单绑定,laravel,laravel-4,eloquent,Laravel,Laravel 4,Eloquent,如何将输入与多对多关系数据绑定 我的关系是:一个模型有许多损坏,而一个损坏有许多模型。在透视表中存在一个价格字段。 我需要用price数据填充输入 {{ Form::input('number', "prices[{$model->id}][{$damage->id}]") }} 我的型号: class Model extends \BaseModel { public function damages() { return $this->b

如何将输入与多对多关系数据绑定

我的关系是:一个
模型
有许多
损坏
,而一个
损坏
有许多
模型
。在透视表中存在一个
价格
字段。 我需要用
price
数据填充输入

{{ Form::input('number', "prices[{$model->id}][{$damage->id}]") }}
我的型号:

class Model extends \BaseModel {

    public function damages()
    {
        return $this->belongsToMany('Damage', 'prices_damages', 'model_id', 'damage_id')
                    ->withPivot('price')
                    ->withTimestamps();
    }

}
<table class="table-striped table-header-rotated">
    <thead>
        <tr>
            <th></th>
            @foreach ($damages as $damage)
            <th class="vertical"><div><span>{{ $damage->name }}</span></div></th>
            @endforeach
        </tr>
    </thead>
    <tbody>
        @foreach ($models as $model)
        <tr>
            <td>{{ $model->fullname }}</td>
            @foreach ($damages as $damage)
            <td>
                {{ Form::input('number', "prices[{$model->id}][{$damage->id}]", null, ['min' => 0, 'step' => 0.01]) }}
            </td>
            @endforeach
        </tr>
        @endforeach
    </tbody>
</table>
数据透视表

Schema::create('prices_damages', function(Blueprint $table)
{
    $table->increments('id');
    $table->integer('model_id')->unsigned();
    $table->integer('damage_id')->unsigned();
    $table->float('price')->nullable();
    $table->timestamps();
});
控制器

/**
 * Display a index dashboard page.
 * 
 * @return \Illuminate\Http\Response
 */
public function getDamages()
{
    $models = \Model::orderBy('order')->get();
    $damages = \Damage::orderBy('order')->get();

    return $this->render('Avarias', 'prices.damages', compact('models', 'damages'));
}
查看:

class Model extends \BaseModel {

    public function damages()
    {
        return $this->belongsToMany('Damage', 'prices_damages', 'model_id', 'damage_id')
                    ->withPivot('price')
                    ->withTimestamps();
    }

}
<table class="table-striped table-header-rotated">
    <thead>
        <tr>
            <th></th>
            @foreach ($damages as $damage)
            <th class="vertical"><div><span>{{ $damage->name }}</span></div></th>
            @endforeach
        </tr>
    </thead>
    <tbody>
        @foreach ($models as $model)
        <tr>
            <td>{{ $model->fullname }}</td>
            @foreach ($damages as $damage)
            <td>
                {{ Form::input('number', "prices[{$model->id}][{$damage->id}]", null, ['min' => 0, 'step' => 0.01]) }}
            </td>
            @endforeach
        </tr>
        @endforeach
    </tbody>
</table>

@foreach($损害赔偿为$损害赔偿)
{{$damage->name}
@endforeach
@foreach($models作为$model)
{{$model->fullname}
@foreach($损害赔偿为$损害赔偿)
{Form::input('number',“prices[{$model->id}][{$damage->id}]”,null,['min'=>0,'step'=>0.01])}
@endforeach
@endforeach

您无法绑定集合(在laravel表单模型绑定的意义上),因此可以执行以下操作:

@foreach ($model->damages as $damage)
  {{ Form::input('number', "damages[{$damage->id}][price]", $damage->pivot->price) }}
@endforeach

你为什么称一个模型为“模型”?好像你的名字不是“米格尔·博尔赫斯”,而是“人类博尔赫斯”。:你应该考虑给它另一个名字——一个反映它任务的名字。模型名称是同一个模型,它是,例如,一个汽车模型。