我使用两个数据透视表来存储表的两个不同关系。一个关系在插入时工作正常。但是下一个会抛出以下错误。我不知道是什么导致了这一点。
SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败(
sdesk
。approvers
,CONSTRAINTapprovers_user_id_foreign
FOREIGN KEY({{ 1}})参考user_id
(users
))(SQL:插入id
(approvers
,user_id
,request_id
,{{1 }})值(2,6,2014-04-29 10:54:37,2014-04-29 10:54:37))
这是我的代码:
UrequestsController.php
updated_at
Approver.php
created_at
Ruser.php
public function postCreate() {
$request = new Urequest;
$request->vms = Input::get('vms');
$request->location = Input::get('location');
$request->descr = Input::get('descr');
$request->status = Input::get('status');
//$request->role_group = Input::get('team');
$request->save();
$ruser = new Ruser;
$ruser->user_id = Input::get('userid');
$ruser->urequest()->associate($request);
$ruser->save();
$approver = new Approver;
$approver->user_id = Input::get('aid');
$approver->urequest()->associate($request);
$approver->save();
return Redirect::to('users/dashboard')->with('message', 'Saved!');
}
urequest.php
class Approver extends Eloquent {
protected $fillable = array('request_id', 'user_id');
public function urequest() {
return $this->belongsTo('Urequest','request_id');
}
}
模式
class Ruser extends Eloquent {
protected $fillable = array('request_id', 'user_id');
public function urequest() {
return $this->belongsTo('Urequest','request_id');
}
}
答案 0 :(得分:3)
“外键约束”通常在您在外表中插入/更新的值没有行时失败。
在这种情况下,您可能在users表中没有user_id为2,或者request表中的request_id为6。
编辑刚刚看到morawcik在评论中回答了这个问题。