Laravel-如果输入为空,则使用默认值

Mit*_*Eff 4 laravel eloquent

在Laravel中,如果我为所有整数都设置了默认值0,那么如果请求为null,如何才能使其与默认值保持一致?

我试过了:

$property->bedrooms = $request->input('bedrooms', 0);
Run Code Online (Sandbox Code Playgroud)

但是它仍然只是尝试将其设置为null并引发错误,因为我假设这仅仅是因为该值根本不存在。

当然,我可以去:

if($request->bedrooms){
    $property->bedrooms = $request->bedrooms;
}else{
    $property->bedrooms = 0;
}
Run Code Online (Sandbox Code Playgroud)

...但是似乎很冗长。

是否有我所缺少的更整洁的解决方案?如果您确实需要每次都使用if / else,则默认值是无用的。

Rob*_*eca 6

在Laravel 5.4中,他们添加了ConvertEmptyStringsToNull中间件,该中间件实际上将覆盖$ request-> input()缺省值,就像请求中不存在该字段一样,它将以null值将其添加到请求中。

如果您注释掉app \ Http \ kernel.php中的中间件,则$ request-> input(字段,默认值)将再次起作用

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,
    ];
Run Code Online (Sandbox Code Playgroud)