SQLSTATE[42S22]:找不到列:1054 'field list' 中的未知列“0”

SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'field list'

我写了一个 lumen 代码来更新我的 table 字段, 这是我的代码 -

$field='';
if($request->input('category')){
   $val=$request->input('category');
   $field="'category' => '$val'";
}
if($request->input('subcategory')){
   $val=$request->input('subcategory');
   if($field==''){
      $field="'sub_category' => '$val'";
   } else{
      $field.=",'sub_category' => '$val'";
   }
}
// return $field;

$Expence=DB::table('expencedetails')
           ->where('id',$request->input('id'))
           ->update(['$field']);

$field的值为'category' => 'fgfg','sub_category' => 'ggg'.

当我 运行 代码显示错误时

SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'field list' (SQL: update expencedetails set 0 = $field where id = 1)

参考https://laravel.com/docs/5.0/queries#updates

Syntax:

->update(['votes' => 1]);

我认为您的更新缺少参数

->update(['$field'])

以下更改可能会有所帮助:

->update(['your_column_name_here' => $field])

您可能需要将逻辑重写为

$fields=array();
if($request->input('category')){
    $fields['category'] = $request->input('category');
}
if($request->input('subcategory')){
    $fields['sub_category'] = $request->input('subcategory');
}
$Expence=DB::table('expencedetails')
           ->where('id',$request->input('id'))
           ->update($fields);
  • 如果请求有类别则更新类别
  • 如果请求只有 sub_category 则更新 sub_category
  • 如果请求有两个类别 和 sub_category 然后更新两者