往list 表里添加一行记录,然后更新一下user表里的status字段
先用 M 函数实例化一个空对象,使用 table 方法进行多个表的操作,如果操作成功则提交,失败则回滚
如下为thinkPHP3.1.2多表事务处理方式案例,注意table内填写的必须包含前缀的全名表table('tk_user'),很多时候我们可能需要可以自定义表前缀,为了灵活可以写成table(C('DB_PREFIX').'user');
public function ImportData() {
$Model = M(); //先用 M 函数实例化一个空对象
$map = true; //先设置一个真值
$Model->startTrans(); //开启事务
echo "事务已开启.........";
foreach ( $result as $key => $value ) { //$result为获取到的二维数组
if ($key == 0 || $value == "") {
continue;
}
if(条件1){
$data['name'] = $result ['name'];
$data['ban'] = $result ['ban'];
$data['fee'] = $result ['fee'];
//往list表里添加一条数据,添加的记录都存在Model里,最后每一条都成功时才会commit,有一条出错时都会rollback
$res = $Model->table('list') -> add($data);
if(条件2){
$condition['name'] = $result ['name'];
$update['status'] = 1;
$res2 = $Model->table('user') -> where($condition) -> data($update) -> save();
}else{
//设置fals的作用是为了最后判断事务提交,还是回滚
$map = false;
}
}else{
$map = false;
}
}
echo "事务正在处理.........";
if($map==true){
$Model->commit();
echo '操作成功';
}else{
$Model->rollback();
echo '操作失败';
}
echo "事务结束下面的代码将不再受事务影响.........";
}参考来源:https://blog.csdn.net/qq_33867131/article/details/78060047
个人在订单案例中的一些用法

如果本文对你有帮助,欢迎打赏本站

支付宝扫码打赏
微信扫码打赏
