今天發生一件很神奇的事情,我用TP讀取DB數據,而後打印出來的數據,和直接經過sequal pro查詢出來的數據(某一列),怎麼對都對不起來,我嘗試緩存
都無功而返,最後我發現問題出在這裏app
$model = new Model(); $model->startTrans(); . . . . . // 寫明細 $saveData = $this->getChkSaveItems($refund_items); $saveData && $flag = $applyItem->saveAll($saveData); //這裏是重點 // $model->commit(); $refund_rst = M('b2b_refunds_apply_item')->field($fields)->group("{$voucher_type}")->where($where)->select(); echo '<pre>'; print_r($refund_rst); echo '</pre>'; exit;
也就是說,我在打印數據的時候還在事務以內,還沒commit或者rollback,而在打印這個結果以前,我剛對該列執行了update操做,因此以後我再讀取這一列,實際上讀取的是內存的值,並非DB裏的值。只有commit或者rollback以後,我再打印,那就和DB的值一致了。this