laravel 如何确保只更新数据表结构中有的字段

问题:最新在做项目中,需要更新数据,但是有时候前端或者一些form会提交数据表中没有的字段,如果直接交给Orm,会直接报错,说某字段不存在

解决路径:

  1. 在Model层添加字段白名单$fillable
  2. 在Update之前重新组装数组,保障都是数据表中有的字段,例如
    图片.png
    3.每次更新前,获取表中的结果,与给到的更新数组进行对比,取出来交集,然后再去更新,例如
    图片.png

问题: 有没有更加简单有效的方式处理这个问题,问题应该不是交给Model,如何在request的时候就直接进行过滤呢?

阅读 4.3k
3 个回答

我觉得一个一个字段指定为好, 不要搞什么按前端传来的数据设字段.
这是风险的来源.

  1. controller 层用 request()->only() 只获取想要的字段
  2. 也可以结合 validate 进行验证
$validator = validator(request()->only('field'), [
    'field' => 'require|string'
]);

if (!$validator->fails()) {
    $params = $validator->validated();
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题