Laravel 5透视表更新

时间:2015-02-28 23:17:14

标签: laravel laravel-5

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

2 个答案:

答案 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']) !!}