laravel - SQLSTATE [HY000]:一般错误:1366 不正确的整数值:“null”在 Nullable 列上
问题描述
当我尝试通过 laravel 将一些可为空的整数值更新为 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>, `next` = null, `order` = 9, `questions`.`updated_at` = 2021-02-14 17:18:29 where `id` = 9 and `questions`.`deleted_at` is null)
我已经尝试直接在SQL控制台上执行错误的SQL,它没有问题,更新为可空整数列接受空值,所以我认为它与laravel有关,但我可以'找不到问题,任何帮助将不胜感激。
这是我用来执行更新的代码
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();
}
解决方案
万一以后有人遇到和我一样的问题,在我的情况下,问题是使用 Axios 发布的 FormData 对象将每个值都转换为字符串,包括空值,因此空值变为“空”,它会出错将其保存到数据库时。问题不在于 laravel,而是在前端的 javascript 上,laravel 仍然很奇怪,因为它说生成的查询是 ... next
= null ... 而不是 ... next
= "null" ...
推荐阅读
- python - 使用 Tensorflow 2 输入管道分离 trainX 和 trainY 进行多损失训练
- pandas - 如何将新文件添加到数据框
- angular - 错误:ENOENT:在 Angular 中将文件扩展名从 .sass 更改为 .scss 后没有这样的文件或目录
- java - Azure-SQL:是否可以使用带有 TLS 1.2 的 jTDS 连接到 Azure SQL Server?
- visual-studio-code - 如何让我的 vscode 字体像 sublime 一样倾斜?
- haproxy - 如果存在具有值的标头,则路由到特定后端
- javascript - 每月供款的复利计算器
- java - 从java中的arraylist中删除对象
- c# - 测试用例在空断言上失败
- xaml - 使图像适合框架 XAML