在Laravel 5.5中保存值为零的数字字段

在Laravel 5.5中保存值为零的数字字段,laravel,Laravel,我有一个接受产品交付的表单,我注意到如果我在数量字段中输入0,它不会保存在数据库中,即使我在日历或Notes字段中添加数据 我已经注释掉了\illumb\Foundation\Http\Middleware\convertEmptyStringsToull::类,iin kernel.php仍然无法工作 即使我想在数量上输入0,我如何强制laravel保存我的数据?提前谢谢 更新 public function store(Request $request) { $input = $r

我有一个接受产品交付的表单,我注意到如果我在数量字段中输入0,它不会保存在数据库中,即使我在日历或Notes字段中添加数据

我已经注释掉了
\illumb\Foundation\Http\Middleware\convertEmptyStringsToull::类,
iin kernel.php仍然无法工作

即使我想在数量上输入0,我如何强制laravel保存我的数据?提前谢谢

更新

public function store(Request $request)
{
    $input = $request->all();

    $items = [];

    for ($i = 0; $i <= count($input['order_id']); $i++) {

        if (empty($input['stock_in_qty'][$i]) || !is_numeric($input['stock_in_qty'][$i])) continue;

        $acceptItem = [
            'order_id'      => $input['order_id'][$i],
            'product_id'    => $input['product_id'][$i],
            'order_item_id' => $input['order_item_id'][$i],
            'delivery_date' => $input['delivery_date'][$i],
            'company_id'    => $input['company_id'][$i],
            // 'stock_in_qty' => intval($input['stock_in_qty'])[$i],
            'stock_in_qty'  => $input['stock_in_qty'][$i],
            // 'stock_out_qty' => $input['stock_out_qty'][$i],
            // 'transfer_to' => $input['transfer_to'][$i],
            'delivery_note' => $input['delivery_note'][$i],
            'user_id'       => $input['user_id'][$i],
        ];
        array_push($items, Warehouse1stocks::create($acceptItem));

        $stockSummary = Warehouse1StockSummaries::firstOrCreate(
            ['product_id' => $input['product_id'][$i]],
            ['qty_in'  => $input['stock_in_qty'][$i],
             'qty_out' => null,
            ]);

        if (!$stockSummary->wasRecentlyCreated) {
            $stockSummary->increment('qty_in', $input['stock_in_qty'][$i]);
        }
    }

    if ($input['rd'] == $input['stock_in_qty'] || $input['rd'] == 0) {
        $order_idAcceptedItem = $acceptItem['order_id'];
        $setStatus = \App\Orders::where('id', '=', $order_idAcceptedItem)->first();
        if ($setStatus) {
            $setStatus->status_id = 4;
        }
        $setStatus->save();
    } else {
        $order_idAcceptedItem = $acceptItem['order_id'];
        $setStatus = \App\Orders::where('id', '=', $order_idAcceptedItem)->first();
        if ($setStatus) {
            $setStatus->status_id = 3;
        }
        $setStatus->save();
    }

    return redirect()->route('orders.index');
}
公共函数存储(请求$Request)
{
$input=$request->all();
$items=[];
对于($i=0;$i$input['order_id'][$i],
'product_id'=>$input['product_id'][$i],
'order\u item\u id'=>$input['order\u item\u id'][$i],
“交货日期”=>$input[“交货日期”][$i],
'公司id'=>$input['公司id'][$i],
//“库存数量”=>intval($input[“库存数量”)[$i],
“库存数量”=>$input[“库存数量”][$i],
//“缺货数量”=>$input[“缺货数量”][$i],
//'传送到'=>$input['传送到'][$i],
“交货通知”=>$input[“交货通知”][$i],
'user_id'=>$input['user_id'][$i],
];
数组_push($items,Warehouse1stocks::create($acceptItem));
$stockSummary=Warehouse1StockSummaries::firstOrCreate(
['product\U id'=>$input['product\U id'][$i]],
['qty\U in'=>$input['stock\U in\U qty'][$i],
“数量输出”=>空,
]);
如果(!$stockSummary->最近创建){
$stockSummary->increment('qty_in',$input['stock_in_qty'][$i]);
}
}
如果($input['rd']=$input['stock_in_qty'].| |$input['rd']==0){
$order_idAcceptedItem=$acceptItem['order_id'];
$setStatus=\App\Orders::where('id','=',$order_idacceptedem)->first();
如果($setStatus){
$setStatus->status_id=4;
}
$setStatus->save();
}否则{
$order_idAcceptedItem=$acceptItem['order_id'];
$setStatus=\App\Orders::where('id','=',$order_idacceptedem)->first();
如果($setStatus){
$setStatus->status_id=3;
}
$setStatus->save();
}
return redirect()->route('orders.index');
}
empty()
将返回
true
0
'0'
,这意味着如果您尝试将数量更改为0,则
for
循环将继续到下一个循环。如果您需要检查该值是否存在,可以改用
isset()

您只需将第一个if语句更改为以下内容:

 if(!isset($input['stock_in_qty'][$i]) || !is_numeric($input['stock_in_qty'][$i])) continue;

数量字段的列类型是什么?Hi@PrafullaKumarSahu its$table->integer('stock_in_qty')->unsigned();控制器的更新方法如何?您可以在那里添加一个空检查,如
$model->quantity=$request->quantity??0;
0可能正在转换为
false
,在这种情况下,您应该明确说明类型,即:
(int)$request->quantity
(验证它是一个数字后).hi@TahaPaksu实际上我没有更新方法,我只有store方法。确切地说@RossWilson就是这样。我刚刚应用了你的建议@RossWilson。我收到了未定义的偏移量:3零现在保存在我的数据库中,但我有一个错误异常(E_注意)未定义的偏移量:3?它指向如果(!is_numeric($input)['stock\u in_qty'][$i])继续;@Lito我已经更新了我的答案。如果您需要检查该值是否存在,请使用
isset
而不是
empty
。我还建议使用,而不是内联验证。谢谢@RossWilson!我会注意到这一点。我相信您已经救了我两次了!:)