[英]Laravel 5 Pivot Table Extra Field
我想做的是,当创建一个新的候选人时,一个额外的字段会自动填充到连接数据透视表中,并带有一个随机的字符串。
这是我的数据透视表:
结果表(数据透视)
id cert_number candidate_id qualification_id
1 ? 17 2
2 ? 17 1
3 ? 57 1
所以在我的候选控制器中,我有:
public function store(CandidateRequest $request)
{
$candidateInput = Input::get('candidates');
foreach ($candidateInput as $candidate)
{
$candidate = Candidate::create($candidate);
$candidate->centre()->attach(Auth::user()->centre);
$qualification_id = $request->input('qualification_id');
$candidate->qualification()->attach($qualification_id);
$cert_number = Str::random(10);
$candidate->qualification()->attach($cert_number);
}
return redirect('candidates');
}
它完美地添加了center_id和qualification_id,但不会将随机字符串插入cert_nubmer字段。
在我的候选人模型中,
public function result()
{
return $this->hasMany('App\Result')->withTimestamps();
}
public function qualification()
{
return $this->belongsToMany('App\Qualification', 'Results', 'candidate_id', 'qualification_id')->withPivot('status','cert_number','partial_claim')->withTimestamps();
}
在我的结果模型中:
public function candidate()
{
return $this->belongsTo('App\Candidate')->withTimestamps();
}
public function qualification()
{
return $this->belongsTo('App\Qualification');
}
谁能看到我的问题出在哪里?
谢谢。
附加不能那样工作。
让我取出两行代码:
$candidate->qualification()->attach($qualification_id);
$candidate->qualification()->attach($cert_number);
您试图将$ cert_number添加为qualification_id,这就是为什么它失败的原因。 当您这样做时,Laravel应该如何知道第二行($ cert_number)是一个额外的数据透视列? 没有。 您有两行代码完全相同,因此您不能期望Laravel知道第二行应该做一些不同的事情。
当您要将额外的数据插入其他数据透视表列时,需要将它们作为数组传递给第二个参数。 像这样:
$candidate->qualification()->attach($qualification_id, ['cert_number' => $cert_number]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.