【问题标题】:Laravel 5 pivot table updateLaravel 5 数据透视表更新
【发布时间】:2016-12-31 02:41:50
【问题描述】:

我在 podkategorija 和 artikal 表和数据透视表 artikal_podkategorija 之间有多对多的关系。插入工作正常,但我不知道如何更新数据透视表中的数据。我试图更新 artikal 数据并更新从 selectform 中选择的数据透视表数据 artikal_id。

数据透视表

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

【问题讨论】:

    标签: laravel laravel-5


    【解决方案1】:

    您要查找的方法是updateExistingPivot(),如文档中所述:http://laravel.com/docs/master/eloquent#working-with-pivot-tables

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2016-03-09
        • 1970-01-01
        • 1970-01-01
        • 2015-09-10
        • 2021-10-03
        • 1970-01-01
        • 1970-01-01
        • 2016-02-06
        • 2015-09-21
        相关资源
        最近更新 更多