请问for怎么判断结束,以及是否需要开事务
public function ensure_verific_code(Request $request) {
$ensure = OrderItem::whereIn('id', $request->list)->update([
'used_at' => date("Y-m-d h:i:s"),
'use_status' => 5
]);
for($i=0;$i<count($request->list);$i++) {
$goods = OrderItem::find($request->list[$i])->merchant_goods;
$order_item = OrderItem::find($request->list[$i]);
Wallet::create([
'user_id' => $request->user()->id,
'order_id' => $order_item->order->id,
'order_item_id' => $request->list[$i],
'reason' => '核销:' . $order_item->trade_no . ':' . $goods->merchant_goods_title,
'original_price' => $order_item->item_unit_price,
'service_percent' => '0.1',
'service_price' => bcmul($order_item->item_unit_price, 0.1, 2),
'real_price' => bcsub($order_item->item_unit_price, bcmul($order_item->item_unit_price, 0.1, 2), 2)
]
);
}
if($ensure) {
return response()->json(["status"=> 'success'])->setStatusCode(201);
} else {
return response()->json(["status"=> 'fail'])->setStatusCode(201);
}
}
我这个需求是要根据核销的单号给用户生成结算流水,因为可能一次核销多个单号,所以用for来产生多条流水记录,有没有更好的方式,因为for不知道怎么判断是否成功了,另外,需要开一个事务吗?会不会有可能流水丢失
改成下面这样呢:
public function ensure_verific_code(Request $request) {
$orderItems = OrderItem::whereIn('id', $request->list)->with('merchant_goods')->get();
$walletData = [];
foreach ($orderItems as $orderItem) {
$goods = $orderItem->merchant_goods;
$walletData[] = [
'user_id' => $request->user()->id,
'order_id' => $orderItem->order->id,
'order_item_id' => $orderItem->id,
'reason' => '核销:' . $orderItem->trade_no . ':' . $goods->merchant_goods_title,
'original_price' => $orderItem->item_unit_price,
'service_percent' => '0.1',
'service_price' => bcmul($orderItem->item_unit_price, 0.1, 2),
'real_price' => bcsub($orderItem->item_unit_price, bcmul($orderItem->item_unit_price, 0.1, 2), 2)
];
}
$updatedCount = OrderItem::whereIn('id', $request->list)->update([
'used_at' => now(),
'use_status' => 5
]);
Wallet::insert($walletData);
$status = $updatedCount ? 'success' : 'fail';
return response()->json(['status' => $status])->setStatusCode(201);
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: