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