迅睿CMS框架是一款PHP8高性能·簡單易用的CMS開源開發(fā)框架,基于MIT開源許可協(xié)議發(fā)布,免費且不限制商業(yè)使用,是免費開源的產(chǎn)品,以萬端互聯(lián)為設計理念,支持的微信公眾號、小程序、APP客戶端、移動端網(wǎng)站、PC網(wǎng)站等多終端式管理系統(tǒng)。
聯(lián)系官方銷售客服
1835022288
028-61286886
數(shù)據(jù)庫操作的時候 \Phpcmf\Service::M()->db->table('1_shop')->where('num',$num)->where('id', $id)->update(['num'=>$num2]); 如果不滿足更新條件更新失敗返回什么,有沒有事務封裝的方法
if (\Phpcmf\Service::M()->db->table('1_shop')->where('num',$num)->where('id', $id)->countAllResults()) {
\Phpcmf\Service::M()->db->table('1_shop')->where('num',$num)->where('id', $id)->update(['num'=>$num2]);
} else {
不滿足條件
}
回復迅??蚣軇?chuàng)始人 是這樣的,我用模塊添加了一個num庫存字段,用戶每提交一次就庫存值減一
$rt=\Phpcmf\Service::M()->db->table('1_shop')->where('id',$id)->get();
$row = $rt->getRowArray();
$num=$row['num'];
$num2=$num-1;
$rt=\Phpcmf\Service::M()->db->table('1_shop')->where('num',$num)->where('id', $id)->update(['num'=>$num2]);
//模塊這里就是不管更新失敗還是成功都是返回true沒有憑證
接著下面我會將這個模塊內(nèi)容的id更新到用戶提交的表單里的一個字段,證明領取對應的內(nèi)容優(yōu)惠券成功
現(xiàn)在的問題是,如果我沒有庫存,始終返回true,我下面針對表單用戶提交后對他提交的表單數(shù)據(jù)更新時有可能同一時間別的用戶提交了已經(jīng)把這個內(nèi)容的庫存消耗完了,會導致庫存異常問題,所以這里存在無法判斷更新狀態(tài)導致下面更新有可能邏輯錯誤
回復迅??蚣軇?chuàng)始人 而且,更新失敗為什么不是返回false,而是都返回true
if (\Phpcmf\Service::M()->db->table('1_shop')->where('num',$num)->where('id', $id)->countAllResults()) {
\Phpcmf\Service::M()->db->table('1_shop')->where('num',$num)->where('id', $id)->update(['num'=>$num2]);
} else {
不滿足條件
}
回復迅??蚣軇?chuàng)始人 是這樣的,我用模塊添加了一個num庫存字段,用戶每提交一次就庫存值減一
$rt=\Phpcmf\Service::M()->db->table('1_shop')->where('id',$id)->get();
$row = $rt->getRowArray();
$num=$row['num'];
$num2=$num-1;
$rt=\Phpcmf\Service::M()->db->table('1_shop')->where('num',$num)->where('id', $id)->update(['num'=>$num2]);
//模塊這里就是不管更新失敗還是成功都是返回true沒有憑證
接著下面我會將這個模塊內(nèi)容的id更新到用戶提交的表單里的一個字段,證明領取對應的內(nèi)容優(yōu)惠券成功
現(xiàn)在的問題是,如果我沒有庫存,始終返回true,我下面針對表單用戶提交后對他提交的表單數(shù)據(jù)更新時有可能同一時間別的用戶提交了已經(jīng)把這個內(nèi)容的庫存消耗完了,會導致庫存異常問題,所以這里存在無法判斷更新狀態(tài)導致下面更新有可能邏輯錯誤
回復迅??蚣軇?chuàng)始人 而且,更新失敗為什么不是返回false,而是都返回true