/***創(chuàng)建一個(gè)用戶和用戶的關(guān)聯(lián)數(shù)據(jù)*@paramarray$userData*@paramarray$userFinanceData*@returnUserModel*@throws\Exception*/publicfunctionregister($userData,$userFinanceData){$db=UserModel::query()->getConnection();try{$db->beginTransaction();$user=UserModel::create($userData);$userFinanceData['user_id']=$user->id;FinanceAccountModel::create($userFinanceData);//事件觸發(fā)放在這里1?$db->commit();}catch(\Exception$exception){$db->rollBack();throw$exception;}//事件觸發(fā)放在這里2?event(newUserCreatedEvent($user));return$user;}如果放在[1]處,那么如果數(shù)據(jù)庫事務(wù)提交失敗,事件卻發(fā)出去了。導(dǎo)致事件消費(fèi)者取不到該用戶的數(shù)據(jù)。如果放在[2]處,那么如果事件觸發(fā)失?。ɡ鐁edis連接錯(cuò)誤),用戶卻創(chuàng)建成功了,但是創(chuàng)建用戶后需要做的一些事情沒有做,導(dǎo)致用戶數(shù)據(jù)不完整。怎么做才好?
請(qǐng)教各位一個(gè)問題,求解答:先提交事務(wù)還是先觸發(fā)事件?跪求!
動(dòng)漫人物
2019-10-08 13:20:14