我在podkategorija和artikal表以及数据透视表artikal_podkategorija之间有很多关系。插入工作正常,但我不知道如何更新数据透视表中的数据。我尝试更新artikal数据并更新从selectform中选择的数据透视表数据artikal_id。
PIVOT TABLE
Schema::create('artikal_podkategorija', function(Blueprint $table){
$table->increments('id');
$table->integer('artikal_id')->unsigned()->index();
$table->foreign('artikal_id')->references('id')->on('artikli')->onDelete('cascade');
$table->integer('podkategorija_id')->unsigned()->index();
$table->foreign('podkategorija_id')->references('id')->on('podkategorije')->onDelete('cascade');
$table->timestamps();
});
修改视图
{!! Form::model($artikal, ['method' => 'PATCH' , 'action' => ['ArtikliController@update', $artikal->id]]) !!}
<div class="form-group">
{!! Form::label('Podkategorija', 'Podkategorija:') !!}
{!! Form::select('podkategorija_id[]', $podkategorija, null, array('class' => 'form-control','placeholder' => 'Podkategorija',)) !!}
{!! Form::label('Naziv', 'Naziv artikla:') !!}
{!! Form::text('Naziv', null, ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::submit('Izmijeni podkategoriju', ['class' => 'btn btn-primary']) !!}
</div>
{!! Form::close() !!}
我的控制器
public function store(CreateArtikalRequest $request)
{
$article = Artikal::create($request->all());
$article->podkategorije()->attach($request->input('podkategorija'));
return redirect('artikli');
}
答案 0 :(得分:0)
您要查找的方法是updateExistingPivot()
,如文档中所述:http://laravel.com/docs/master/eloquent#working-with-pivot-tables
答案 1 :(得分:0)
在laravel 5.1或更高版本中它应该是这样的:
在你的ArtikalsController中:
public function edit($artikal_id)
{
$artikal = Artikal::findOrFail($artikal_id);
$podkategorijas = Podkategorija::lists('podkategorija_id', 'podkategorija_id');
return view('artikals.edit', compact('artikal', 'podkategorijas'));
}
public function update(Request $request, $artikal_id)
{
$artikal = Artikal::findOrFail($artikal_id);
$artikal->update($request->all());
$artikal->podkategorijas()->sync($request->input('podkategorijas_list'));
return redirect('artikals');
}
在你的Artikal模型中:
public function getPodkategorijaListAttribute()
{
return $this->podkategorijas->lists('podkategorija_id')->all();
}
在你的edit.blade.php中:
{!! Form::label('podkategorija_list', 'Tags') !!}
{!! Form::select('podkategorija_list[]', $podkategorijas, null, ['multiple']) !!}