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

时间:2017-07-20 01:18:11

标签: laravel eloquent

在Laravel中,如果我为所有整数设置了默认值0,如果请求为空,如何使用默认值?

我试过了:

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

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

当然,我可以去:

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

......但这似乎相当冗长。

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

1 个答案:

答案 0 :(得分:4)

在Laravel 5.4中,他们添加了 ConvertEmptyStringsToNull 中间件,它基本上覆盖了$ request-> input()默认值,就好像该请求中不存在该字段一样,它会将其添加到请求值为 null

如果您在 app \ Http \ kernel.php

中注释掉中间件,

$ request->输入(字段,默认值)将再次起作用

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,
    ];