获取"完整性约束违规:1452"在Laravel

时间:2014-04-29 11:39:31

标签: php mysql laravel laravel-4 eloquent

我使用两个数据透视表来存储表的两个不同关系。一个关系在插入时工作正常。但是下一个会抛出以下错误。我不知道是什么导致了这一点。

  

SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败(sdeskapprovers,CONSTRAINT approvers_user_id_foreign FOREIGN KEY({{ 1}})参考user_idusers))(SQL:插入idapproversuser_idrequest_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');
}

 }

1 个答案:

答案 0 :(得分:3)

“外键约束”通常在您在外表中插入/更新的值没有行时失败。

在这种情况下,您可能在users表中没有user_id为2,或者request表中的request_id为6。

编辑刚刚看到morawcik在评论中回答了这个问题。