2017-07-20 1969 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