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

标签 laravel eloquent

在 Laravel 中,如果我为所有整数设置了默认值 0,如果请求为空,我怎样才能让它使用默认值?

我试过了:

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

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

当然,我可以去:
if($request->bedrooms){
    $property->bedrooms = $request->bedrooms;
}else{
    $property->bedrooms = 0;
}

……但这似乎相当冗长。

有没有我缺少的更简洁的解决方案?当然,如果您每次都需要使用 if/else,那么默认值几乎毫无用处。

最佳答案

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

如果您在 中注释掉中间件,$request->input(field, default value) 将再次起作用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,
    ];

关于Laravel - 如果输入为空,则使用默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45203570/

相关文章:

mysql - laravel 在插入之前检查记录是否存在,这是一种有效的方法

php - 在 Laravel 中更新不可填写的字段?

php - 尝试在 Laravel 5 中安装 'Illuminate\Html' 时找不到“Illuminate\Html\HtmlServiceProvider”

laravel - 将现有列更改为在迁移中具有默认值

laravel - Laravel 5 中的 whereHas() 中的多个 orWhere()

php - Eloquent ORM Laravel 的非主键但自动递增 id

javascript - 如何使用 react.js 计算购物车中产品的总价

php - 如何使用HTML表单正确地将日期时间插入MYSQL数据库?

php - 与急切加载的 Eloquent 关系

mysql - 将 1 个表的结果与多个变量进行比较,发现共性