Laravel 5更新数据透视表

时间:2015-12-04 20:44:30

标签: laravel-5 eloquent pivot-table

我真的希望有人可以帮助我,这让我疯狂!

我有两个表Candidates和Qualifications加入一个名为Results的Pivot表。

所以我的模型都设置如下:

候选人模特:

public function qualification()
{
    return $this->belongsToMany('App\Qualification', 'Results', 'candidate_id', 'qualification_id')->withPivot('status','cert_number','credits_required','credits_achieved')->withTimestamps();
}

资格模型:

public function candidate()
{
   return $this->belongsToMany('App\Candidate', 'Result', 'qualification_id', 'candidate_id')->withPivot('status','cert_number','credits_required','credits_achieved')->withTimestamps();
}

结果模型:

public function candidate()
{
   return $this->belongsTo('App\Candidate')->withTimestamps();
}

public function qualification()
{
   return $this->belongsTo('App\Qualification');
}

现在我要做的是在候选控制器中运行一个函数,该函数在运行时将更新数据透视表中的字段(结果)。

所以我试过这个,但没有运气。该函数似乎运行但字段保持不变。

public function claim($id)
{
    $candidate_id = Candidate::find($id);

    $candidate_id->qualification()->updateExistingPivot($candidate_id, ['status'=> 'COMPLETE']);

}

谁能看到我哪里出错了? 非常感谢。

1 个答案:

答案 0 :(得分:0)

我不知道为什么我一开始就不这么做!

public function claim($id)
{

    $candidate = Result::find($id);
    $candidate->status = 'COMPLETE';
    $candidate->save();

    return Redirect::back();
}