laravel 语法错误或访问冲突:1064 1064您的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册

smtd7mpg  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(78)

我试图通过API存储前端(flutter)的历史数据。下面是laravel控制器。但是,当我在postman上运行它时,出现了一个错误Column not found:1054“字段列表”中有未知的列“images”。我想它正在检索用户的整个列。在该列中,我只检索了staff_id、date_checkIn、time_checkIn和location_checkIn。如何修复此问题?
我试过User::where('staff_id', 'date_checkIn', 'time_checkIn', 'location_checkIn')->first()->toArray();,但它说
语法错误或访问冲突:1064 1064您的SQL语法有错误;查看与您的MariaDB服务器版本对应的手册,了解在第1行“staff_id =?limit 1”附近使用的正确语法(SQL:从位置签入员工标识=日期签入限制1)在文件中的用户中选择 *.....

public function userClockIn(Request $r) { 
$result = []; 
$result['status'] = false; 
$result['message'] = "something error";

$users = User::where('staff_id', $r->staff_id)->first();

// retrieve current data
$currentData = $users->toArray();

// store current data in historical data table
$historicalData = new HistoricalData();
$historicalData->fill($currentData);
$historicalData->save();

$mytime = Carbon::now();
$time = $mytime->format('H:i:s');
$date = $mytime->format('Y-m-d');

$users->date_checkIn = $date;
$users->time_checkIn = $time;
$users->location_checkIn = $r->location_checkIn;

$users->save();

$result['data'] = $users;
$result['status'] = true;
$result['message'] = "suksess add data";

return response()->json($result);
}
mzmfm0qo

mzmfm0qo1#

若要修复此错误,需要在where子句中指定要从用户表中检索的列。可以使用select方法并传入要选择的列的数组来执行此操作。
下面是如何更新代码以修复错误的示例:

$users = User::where('staff_id', $r->staff_id)->select(['staff_id', 'date_checkIn', 'time_checkIn', 'location_checkIn'])->first();

这将只从用户表中检索指定的列,而不会导致错误。

相关问题