从 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 中,两个新的中间件被包含在 TrimStringsConvertEmptyStringsToNull 中。

实际上,对于每个表单请求,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() 替代方案

从 Laravel 5.2 更新到 5.3 后,调用数组上的成员函数 all()

在升级laravel 5.2到5.3之后,无法在Route :: model中绑定模型