Laravel 用模型更新一条记录时,如果方便的处理该字段的默认值?

场景是这样的,
一个 user 表,其中有一个字段为 name,默认值为'',且不能为 null。

好了,通过表单创建一条 user 记录的时候,由于 name 是选填的,所以没有填,后台接收到'name' => null,如果直接存入表中,会提示 name 列不能为 null,所以就做了如下处理:把值为 null 的全部 unset 掉,例如 unset($data['name']),这样表中就会默认用'' 填充了。

现在假设创建记录时,填了个值 largezhou,之后编辑的时候,在表单中删掉了,如果继续用上面的处理 null 值的方法,那么没有更新到这个 name 字段了,,如果这种非必填,但是又不能为 null 的很少,可以就简单的
$name = $request->get('name', '') 这样处理,但是现在这种字段很多,而且默认值类型和值都不尽相同,,,,

有什么通用的方法吗?暂时想到一个就是更新前,用 SQL 查询模型对应的表的信息,里面有各字段的默认值情况,然后对应判断并设置,,或者一个模型实例里面,有各字段的默认值吗?或者那些非必填字段,应该设置成 nullable

很简单的东西,说了一大堆,,,大家别笑话~~

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 3

比较笨的方法就是 $name = $request->get ('name', '');// 设置默认空

7年前 评论

@LiXunGuan 我现在暂时是更新模型前,用 describe 'table_name' 查询出表的列信息,里面有创建表时,设置的默认值,,然后循环设置那些没有的值的默认值,,,

7年前 评论

在 model 里面使用 setAttribute 方法吧,如果为 null 的话给一个默认值.

7年前 评论