Yii2更新数据的问题

框架是yii2

用户表中一个余额字段balance.

用户1 userId=1 现在余额 100.00 元

用户2 userId=2和用户3 userId=3 同时向用户1转款100元。

这是当时的情况。

转账用的方法:

public function transfer(){

        $userId = 1;

        $user = User::findOne($userId);

        $newBalance = $user['balance'] + 100;

        $user->balance = $newBalance;

        $user->save(false);

    }

用户2,3同时转账,但是用户1只能收到100元。。。
只能用锁的方式或者原生sql语句来保证数据的正确性吗?

有只小跳蛙
浏览 1853回答 2
2回答

繁星淼淼

更新余额你可以换种方式,不用先查出来再update;而是直接更新,sql就是set balance = balance + 100

呼如林

这种我一般使用原生SQL来做。sqlUPDATE USER SET balance=balance+100 WHERE user_id=:uid;yii2Yii::$app->db->createCommand($sql,[':uid'=>$userId])->execute();
打开App,查看更多内容
随时随地看视频慕课网APP