正确使用updateOrCreate方法

时间:2015-11-01 15:16:06

标签: php mysql laravel eloquent

我在保险表和确认表之间有一个OnetoOne关系。

以下是确认的迁移:

$table->increments('id');
        $table->integer('insurance_id')->unsigned()->index()->unique();
        $table->boolean('status');
        $table->timestamps();
        $table->foreign('insurance_id')->references('insurancenumber')->on('insurances');

我想让状态更新。

有一个带有两个拒绝和接受按钮的表单,控制器执行此操作:

    public function confirmation(){

    $confirm_button = Request::get('confirm_button');
    $reject_button = Request::get('reject_button');
    if (isset($confirm_button)){
        $status = true;
    }else if (isset($reject_button)){
        $status = false;
    }
    Confirmation::updateOrCreate(['insurance_id' => session('insurance_id')],['status'=> $status]);
}
}

我想如果存在具有相同insurance_id的确认行,则只需更新它。

状态总是设置为false。会话具有正确的价值,我之前已经检查过。

1 个答案:

答案 0 :(得分:0)

如果您想阻止重复输入,请使用唯一验证规则检查您的唯一属性。

或者,您可以先使用查找或任何查询构建器检入数据库,然后创建新的模型实例(如果它已经不存在)。

$ status变量永远不会到达else块。您可能需要发布表单代码以进行更深入的调查。