laravel - 使用 Laravel 请求在更新方法上传递空字段
问题描述
我通过经典提交的表单获取数据,但由于某种原因,我没有在请求中获取所有输入数据,它只更新收到的数据。
Model::find($id)->update($request->all());
这有点问题,因为我的数据库中有多个可为空的字段,有时我想传递空字段(即当用户清除输入然后提交表单时)
您是否也知道将空字段传递给请求的方法?
解决方案
问题是,Laravel默认通过ConvertEmptyStringsToNull中间件将''
值转换为。检查你的内核:null
应用程序/Http/Kernel.php
protected $middleware = [
// ...
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
// ...
];
该中间件执行以下操作:
protected function transform($key, $value)
{
return is_string($value) && $value === '' ? null : $value;
}
如您所见,如果给定属性有一个值''
,它将被转换为null
.
因此,为避免这种情况,您只需在内核文件中注释该中间件即可。但请注意这一点,因为这将应用于您的整个应用程序。
推荐阅读
- python - Django 表单不呈现
- python - 如何检测选定对象与列表中其他对象之间的碰撞?
- c# - 从管理员命令提示符运行 WCF 服务器不起作用
- r - R ggplot多行x轴标签
- node.js - 填充选项卡式表
- rust - 如何声明一个接受三种不同泛型类型并返回两个较大数的平方和的函数?
- python - 通过避免嵌套 for-for-if 循环中不必要的重复计算来加速脚本
- visual-studio - 如何在 Visual Studio 2019/2017 中查看内置成员函数
- kubernetes - cAdvisor Prometheus container_cpu_load_average_10s has two values
- python - 给定 XYZ 网格点,计算球体内部的体积