thinkphp防止超卖
龙行 PHP 2020-3-13
2489 0评论
$num = 1;
$good_id = 199758;
$model = Db::name("tettt");
$model->execute("set autocommit=0");
$model->startTrans();
//SELECT data AS old_data, version AS old_version FROM …
$data = Db::name("tettt")->lock(true)->where('id',$good_id)->find();
if(empty($data )){
return "商品不存在";
}
$total = $data['count']; //商品库存
if($total< $num){
return "库存不足";
}
$data['count'] = $total-$num;
$res = $model->where('id',$good_id)->update($data);
if($res){
$model->commit();
return "成功购买".$num."个";
}else{
$model->rollback();
return "shibai";
}