从 Laravel 5.3 升级到 Laravel 5.4 并且空字段转换为 NULL
Posted
技术标签:
【中文标题】从 Laravel 5.3 升级到 Laravel 5.4 并且空字段转换为 NULL【英文标题】:Upgrade from Laravel 5.3 to Laravel 5.4 and empty field converts to NULL 【发布时间】:2018-01-15 20:43:54 【问题描述】:我已将 Laravel 从 5.3 升级到 5.4 版本,但是,如果我在提交表单时在文本输入中有一个空值,我现在有一个 NULL 值而不是一个空值,而这并没有发生5.3版本。
我现在必须强制设置可空或必需的验证规则,我该如何解决这个问题?
【问题讨论】:
请阅读What topics can I ask about和What topics to avoid和How to ask a good question以及如何创建Minimal, Complete and Verifiable Example和take the tour 【参考方案1】:在 Laravel 5.4 中,两个新的中间件被包含在 TrimStrings
和 ConvertEmptyStringsToNull
中。
实际上,对于每个表单请求,Laravel 都会自动修剪任何空白,同时还将所有空请求字段转换为 null。
如果您想禁用这些功能,只需在您的 app/Http/Kernel.php
中进行评论即可。
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
// \App\Http\Middleware\TrimStrings::class,
// \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
【讨论】:
【参考方案2】:在 Laravel 5.4 中,有一个中间件 TrimStrings
可以修剪所有空值。
您可以从app/Http/Kernel.php
禁用它。
只需从中间件数组中删除 \App\Http\Middleware\TrimStrings::class,
。
【讨论】:
以上是关于从 Laravel 5.3 升级到 Laravel 5.4 并且空字段转换为 NULL的主要内容,如果未能解决你的问题,请参考以下文章
升级到 Laravel 5.3 - Mail::send 现在从 Mandrill 返回 null
从 4.1 升级到 4.2 后 Laravel 控制器路由中断
Laravel 5.3 到 5.4 (mPdf - niklasravnsborg/laravel-pdf ) 升级问题
Laravel 5.3+ 中的 Route::controller() 替代方案