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
?
很简单的东西,说了一大堆,,,大家别笑话~~
比较笨的方法就是$name = $request->get('name', '');// 设置默认空
@LiXunGuan 我现在暂时是更新模型前,用describe 'table_name'查询出表的列信息,里面有创建表时,设置的默认值,,然后循环设置那些没有的值的默认值,,,
在model里面使用setAttribute方法吧, 如果为null的话给一个默认值.