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))
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 2
自由与温暖是遥不可及的梦想

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

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

可以在模型类的 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. 商品类目数据库结构设计

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

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