Eloquent 默认属性值为 0 的时候,报错问题。

问题

eloquent 模型 item.php 里面已经设置了默认属性,但是为什么在post数据中不填写相应的字段,会报错呢?

默认值,报错如下图:

Eloquent 默认属性值为 0  的时候,报错问题。

QueryException In Connection.php line 664 :
SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'cate_id' at row 1 (SQL: insert into `items` (`cate_id`, `url`, `judge_id`, `owner_one`, `owner_two`, `is_multi`, `status`, `owner`, `title`, `school`, `updated_at`, `created_at`) values (, , , , , 1, 1, 哈哈,呵呵, 测试, 哈哈, 2019-10-14 10:38:44, 2019-10-14 10:38:44))
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 2
自由与温暖是遥不可及的梦想

默认值 为何要这样设置呢? 插入数据的时候,不用那样插入吧

5年前 评论
miaotiao (楼主) 5年前
自由与温暖是遥不可及的梦想 (作者) 5年前
miaotiao (楼主) 5年前
自由与温暖是遥不可及的梦想 (作者) 5年前
miaotiao (楼主) 5年前
自由与温暖是遥不可及的梦想 (作者) 5年前

可以在模型类的 boot 函数 处理字段值,不过默认值应该是在数据库层面表里面设置就OK的啊

    protected static function boot()
    {
        parent::boot();
        // 监听 Category 的创建事件,用于初始化 path 和 level 字段值
        static::creating(function (Category $category) {
            // 如果创建的是一个根类目
            if (is_null($category->parent_id)) {
                // 将层级设为 0
                $category->level = 0;
                // 将 path 设为 -
                $category->path  = '-';
            } else {
                // 将层级设为父类目的层级 + 1
                $category->level = $category->parent->level + 1;
                // 将 path 值设为父类目的 path 追加父类目 ID 以及最后跟上一个 - 分隔符
                $category->path  = $category->parent->path.$category->parent_id.'-';
            }
        });
    }

上面代码来源于 L06 Laravel 教程 - 电商进阶 ( Laravel 5.8 )
第三章 商品类目 3.1. 商品类目数据库结构设计

5年前 评论
miaotiao (楼主) 5年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!