我在数据库字段中得到null

时间:2018-01-16 09:50:18

标签: laravel

以下代码在视图中:

    <input maxlength="2" value="{{ old('discount') }}" 
     class="form-control" type="text" 
     id="product-discount-in-adding-products" 
     name="discount">

这是我在控制器中的代码:

if($request->has('discount')){
    $product->discount = $request->discount;
}else{
    $product->discount = 0;
}

当我通过邮寄方式发送表单时,我在数据库中的折扣字段将为空。

1 个答案:

答案 0 :(得分:3)

在Laravel 5.5中,请求对象上的has方法仅告诉您该字段是否实际存在于请求中,而不是它是否具有值。因此,如果您在表单中为discount提交空值,则首先检查if($request->has('discount')){即可。

现在,Laravel还有中间件来修剪字符串并将空字符串转换为null,因此如果您在discount字段中提交空值,那么您将$product->discount设置为{{1 }}

检查表单是否包含指定输入的值的方法是使用null方法:

filled

这应该会停止评估为if ($request->filled('discount')) { $product->discount = $request->discount; } else { $product->discount = 0; } 的第一次检查,并将true设置为$product->discount

请参阅标有确定输入值是否存在标题下的文档here