Laravel SQLSTATE[HY000]:一般错误:1366不正确的整数值:';空';关于可空列
当我试图通过laravel将某个可为null的整数值更新为null时,我的应用程序出现了一个奇怪的错误Laravel SQLSTATE[HY000]:一般错误:1366不正确的整数值:';空';关于可空列,laravel,axios,laravel-7,Laravel,Axios,Laravel 7,当我试图通过laravel将某个可为null的整数值更新为null时,我的应用程序出现了一个奇怪的错误 SQLSTATE[HY000]: General error: 1366 Incorrect integer value: 'null' for column 'next' at row 1 (SQL: update `questions` set `content` = <strong>Kulitmu sering terlihat/terasa:</strong>,
SQLSTATE[HY000]: General error: 1366 Incorrect integer value: 'null' for column 'next' at row 1 (SQL: update `questions` set `content` = <strong>Kulitmu sering terlihat/terasa:</strong>, `next` = null, `order` = 9, `questions`.`updated_at` = 2021-02-14 17:18:29 where `id` = 9 and `questions`.`deleted_at` is null)
如果将来有人遇到与我相同的问题,在我的情况下,问题是使用Axios发布的FormData对象将每个值转换为字符串,包括null值,因此null值变为“null”,并在将其保存到数据库时出错。问题不在于laravel,而是在前端的javascript上,laravel仍然很奇怪,因为它说生成的查询是<代码>下一步=null。。。而不是
下一步
=“null”..你能添加执行更新的特定代码吗?我更新了这个问题。还有一件事,你能打印$request
和$data
的内容吗?在它被验证器传递之后,它在验证前后变为“null”而不是null,我已经检查了发出请求的前端,它在前端清楚地表示为null而不是“null”。因此,在末尾,查询表达式类似于next`='null',而它应该是next`=null`。希望这能给你一个解决这个问题的线索
public function update(Request $request, $id)
{
$data = $this->validateRequest($request);
$question = Question::where('id', $id)->first();
$question->update($data);
return response()->json([
'question' => $question,
'status' => 'Question has been updated'
]);
}
public function validateRequest($request)
{
$validator = Validator::make($request->all(), [
'content' => 'required',
'next' => 'nullable',
'order' => 'required',
]);
if ($validator->fails()) {
throw(new ApiInvalidRequestData($validator->errors()));
}
return $validator->validated();
}