更新查询使用表单中的预设值返回false

时间:2017-07-23 16:28:25

标签: php laravel laravel-5

当我尝试使用我的表单中的value=""字段更新我的表时,查询失败并返回false,但我无法收到错误,告诉我什么是错误的。

$input = Input::get("textfield");
$option = Input::get("optionfield");

if($option == 0)
{
    $option = null;
}

if(empty($input))
{
    $input = null;
}

$update = MyTable::where("id", "=", 1)->update(["input" => $input, "option" => $option]);

如果我通过在输入字段中输入内容来更改值,则会更新。

怎么回事?

1 个答案:

答案 0 :(得分:0)

基本上,当我们更新现有数据时,我们会将新条目与旧条目进行比较。在您的情况下,您没有进行比较。

所以,让我们这样做。我通常在我自己的情况下这样做:

  • 首先获取现有数据

    $row = MyTable::where("id", 1)->first();
    
  • 然后,比较数据

    $old_data = $row->toArray(); // convert to array first
    $new_data = Input::all(); // assuming all inputs are allowed for updates
    
    // now, lets compare values with additional index check
    $changes = array_diff_assoc($new_data, $old_data);
    
    // update row if has modifications
    if(!empty($changes)) {
        $row->update($changes);
    }
    

希望这有助于解决您的问题。