首页 > 解决方案 > 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();
    }

标签: laravelaxioslaravel-7

解决方案


万一以后有人遇到和我一样的问题,在我的情况下,问题是使用 Axios 发布的 FormData 对象将每个值都转换为字符串,包括空值,因此空值变为“空”,它会出错将其保存到数据库时。问题不在于 laravel,而是在前端的 javascript 上,laravel 仍然很奇怪,因为它说生成的查询是 ... next= null ... 而不是 ... next= "null" ...


推荐阅读