2017-07-20 1971 views
2

在Laravel中,如果我为所有整数设置了默认值0,如果请求为空,如何才能使用缺省值?Laravel - 如果输入为空,则使用默认值

我已经试过:

$property->bedrooms = $request->input('bedrooms', 0); 

但它仍然只是尝试将其设置为空,抛出一个错误,因为我假定这只是因为如果值不存在的。

当然,我可以去:

if($request->bedrooms){ 
    $property->bedrooms = $request->bedrooms; 
}else{ 
    $property->bedrooms = 0; 
} 

...但似乎相当冗长。

我错过了一个整洁的解决方案吗?默认值是无用的,如果你无论如何每次都需要使用if/else。

+0

工作,如果你不想删除' ConvertEmptyStringsToNull'中间件,你可以使用单行三元语句,如:'$ property-> bedrooms = $ request-> bedrooms?:0;' –

+0

Cheers Aaron!我想Rob's是技术上最正确的答案,但这种简写也是真正的方便。 – MitchEff

+0

是的,我同意!只是一个诡计,如果你需要在你的应用程序的其他部分使用该中间件:) –

回答

1

在Laravel 5.4,它们添加了ConvertEmptyStringsToNull中间件,其基本上覆盖了$请求 - >输入()默认值作为如果该字段不存在于请求时,它会将其添加到用的值的请求null

$请求 - >输入(场,默认值),将再次,如果你在应用程序\ 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, 
    ]; 
+0

啊是的。谢谢你,罗伯! – MitchEff