使用 laravl5 忽略更新时的空表单值

Ignore empty form values on update using laravl5

有没有办法从 request->all() 方法中删除空表单值? 这就是我在更新时尝试做的,换句话说,只有 post 填写表格值。

 $data = request()->except(['_token','id']);

 DB::table($table)->where('id',$id)->update($data);

注意:我有动态生成的列,所以我想我不能在参数列表中使用这些列。

这会更新该行的所有列,但我只想更新那些值已填充的列,其余 columns/fields 保持相同的旧值

看看array_filter

// All posted data except token and id
$data = request()->except(['_token','id']);

// Remove empty array values from the data
$result = array_filter($data);

// update record
DB::table($table)->where('id', $arr)->update($result);

希望对您有所帮助。

// app/controllers/GiftsController.php

public function update($id)
{
    // Grab all the input passed in
    $data = Input::all();

    // Use Eloquent to grab the gift record that we want to update,
    // referenced by the ID passed to the REST endpoint
    $gift = Gift::find($id);

    // Call fill on the gift and pass in the data
    $gift->fill($data);

    $gift->save();
}

我在 this tutorial 中找到了这段代码,效果很好。希望对你有帮助。