我们在进行一些业务逻辑的时候,难免会出现批量操作的问题,特别是批量修改操作,如果数据量大,总会考虑到批量修改到一半怎么办?所以如果使用事务来进行批量操作就会好很多,直接看代码:

public function edit(){
if(!IS_POST)die;
$data = I('post.');
$columDB = D('Column');
$id = I('post.id','','intval');
$mid = I('post.mid','','intval');
$name = strtolower(I('post.name','','trim'));
$pid = I('post.pid','','intval');
//$savepid = $columDB->where(array('id'=>$id))->getField('pid');
// $model_name = M('admin_model')->where(array('id'=>$mid))->getField('table_name');
$data['url'] = $name.'/';
$data['updatetime'] = time();
// if(!$pid){
// $data['url'] = strtolower($model_name).'/index.html';
// };
// 顶级栏目用的是 index 方法
$return = array();
$return['code'] = 1;
$return['msg'] = '修改成功';
// 修改栏目的时候 如果修改过栏目的标识 需要修改当前栏目下的所有文章的链接
$cateInfo = $columDB->find($id);
$error=[]; // 记录失败ID
if($name != $cateInfo['name']){
$document = M('document');
$list = $document->where(array('cid'=>$id))->select();
// 开启事务
$document->startTrans();
foreach($list as $k=>$v){
// setField('value', $val);
$isRight = $document->where(array('id'=>$v['id']))->setField('url',$name.'/'.$v['id'].'.html');
if(!$isRight){
$error[] = $isRight;
};
};
if(count($error)){
$document->rollback();
$return['code'] = 0;
$return['msg'] = '修改栏目文章链接失败';
exit(json_encode($return));
};
$document->commit();
};
if(!$columDB->create($data)){
$return['code'] = 0;
$return['msg'] = $columDB->getError();
exit(json_encode($return));
};
// 开启事务
$columDB->startTrans();
$resID = $columDB->save();
if(!$resID && $resID != 0){
// 回滚
$columDB->rollback();
$return['code'] = 0;
$return['msg'] = '修改失败';
};
$columDB->commit();
// if(!$resID && $resID != 0){
// $return['code'] = 0;
// $return['msg'] = '修改失败';
// };
$return['id'] = $resID;
exit(json_encode($return));
}

  

thinkphp---用事务处理批量操作的更多相关文章

  1. 分布式缓存Redis集群配置使用

    Redis 简介          redis是一种开源的.基于内存的.可持久化的.高性能的Key-Value数据存储系统. redis能做什么? 持久化存储  高速缓存 消息中间件         ...

  2. thinkphp事务处理以及无效时的解决方案(整理)

    thinkphp事务处理以及无效时的解决方案(整理) 一.总结 一句话总结:要程序里面支持事务,首先连接的数据库和数据表必须支持事务 mysql 1.InnoDB和MyISAM对事务的支持怎么样? I ...

  3. ThinkPHP实现事务回滚示例代码(附加:PDO的事务处理)

    ThinkPHP的事务回滚示例如下: $m=D('YourModel');//或者是M(); $m2=D('YouModel2'); $m->startTrans();//在第一个模型里启用就可 ...

  4. ThinkPHP 事务处理 (事务回滚) 、异常处理

    $tran_result = true;                $trans = M();                $trans->startTrans(); try {      ...

  5. thinkphp 多表事务处理

    try{ $this->user = D('User'); $this->user->startTrans(); //开始事务 $res = $this->user->S ...

  6. ThinkPHP5.0框架事务处理操作简单示例

    本文介绍ThinkPHP5.0框架事务处理操作,结合实例形式分析了ThinkPHP5针对删除操作的事务处理相关操作技巧,可以加深对ThinkPHP源码的理解,需要的朋友可以参考下 事务的调用在mysq ...

  7. tinkphp3.2.3 关于事务处理。

    自己做一个测试,关于事务处理的. 在对多表进行操作的时候 基本上都离不开事务. 有的操作,是要由上一操作后,产的值(如主表里插入后,要获取插入的主键ID值,返回给下面处理表用.)带到后面的表处理当中去 ...

  8. thinkphp 的事务回滚处理 和 原始PHP的事务回滚实例

    1.  要程序里面支持事务,首先连接的数据库和数据表必须支持事务 mysql   为例: 数据库InnoDB支持 transactions 数据表支持事务:InnoDB  支持transaction ...

  9. legend---十一、thinkphp事务中if($ans1&&$ans2){}else{}方式和try{}catch{}方式事务操作的区别在哪里

    legend---十一.thinkphp事务中if($ans1&&$ans2){}else{}方式和try{}catch{}方式事务操作的区别在哪里 一.总结 一句话总结:执行的条件其 ...

随机推荐

  1. 6 云计算系列之Nova安装与配置

    preface 上面安装好了glance,下面就开始部署nova计算服务了. nova组件介绍 首先介绍下nova各个组件. api 用来接收和响应外部的请求唯一途径,支持Openstack api, ...

  2. MAC软件下载比较好的三个第三方网站

    http://soft.macx.cn; http://www.applex.net: http://www.macdang.com;

  3. [转]总结使用Unity 3D优化游戏运行性能的经验

    转载自:http://www.gameres.com/msg_221889.html 作者:Amir Fasshihi 流畅的游戏玩法来自流畅的帧率,而我们即将推出的动作平台游戏<Shadow ...

  4. FileSaver.js 浏览器导出Excel文件

    限制一:不同浏览器对 blob 对象有不同的限制 具体看看下面这个表格(出自 FileSaver.js): Browser Constructs as Filenames Max Blob Size ...

  5. android:versionCode和android:versionName 用途(转)

    转自:http://blog.csdn.net/wh_19910525/article/details/8660416 Android的版本可以在androidmainfest.xml中定义,主要有a ...

  6. Ubuntu 16.04服务器 配置

    1. 修改用户名称:切换到root打开如下两个配置文件 sudo vim /etc/passwd 把我想改的"xxx"这个用户名改为"way"了,保存并退出 s ...

  7. 8 -- 深入使用Spring -- 2...3 使用@Resource配置依赖

    8.2.3 使用@Resource配置依赖 @Resource 位于javax.annotation包下,是来自Java EE规范的一个Annotation,Spring直接借鉴了该Annotatio ...

  8. 7 -- Spring的基本用法 -- 9...容器中Bean的生命周期

    7.9 容器中Bean的生命周期 Spring可以管理singleton作用域的Bean的生命周期,Spring可以精确地知道该Bean何时被创建,何时被初始化完成.容器何时准备销毁该Bean实例. ...

  9. Push rejected: Push master to origin/master was rejected /failed to push some refs to /git did not exit cleanly

    用studio提交代码报 Push rejected: Push master to origin/master was rejected 用TortiuseGit提交代码报下面错,(我是用这种方法解 ...

  10. Python标准异常和异常处理详解

    python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 1.异常处理: 本站Python教程会具体介绍. 2.断言(Asserti ...