2014-09-28 83 views
0

如何綁定具有多對多關係數據的輸入?多對多表單綁定

我的關係是:a Model有很多Damages,而Damage有很多Models。在數據透視表中存在一個price字段。 我需要用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(); 
    } 

} 

透視表

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')); 
} 

查看:

<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> 
+0

「模型」?這就像你的名字不是「Miguel Borges」,而是「人類博爾赫斯」。 :P你應該考慮給它另一個名字 - 一個反映它的任務的名字。 – chris342423 2014-09-28 11:14:25

+0

車型名稱與車型相同,例如車型。 – 2014-09-28 15:20:48

回答

0

您不能綁定集合(在laravel表單模型結合的意義上),那麼你可以這樣做:爲什麼你會調用模型

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