thinkphp3.2 多表事务的实例
2017-08-28 12:16
351 查看
多表事务不同于单表
1. 需要使用空白的Model 来开启以及使用事务
2. 如果不是在Model里面, 需要使用 $model->table() 来进行insert update delelte操作 , 但是直接D() 操作试验了也是可以的
3. 如果是特定的Mysql链接在实例化 model的时候链接使用 eg : M('','', 'MYSQL_CRSAPI)
4. 默认不支持嵌套
1. 需要使用空白的Model 来开启以及使用事务
2. 如果不是在Model里面, 需要使用 $model->table() 来进行insert update delelte操作 , 但是直接D() 操作试验了也是可以的
3. 如果是特定的Mysql链接在实例化 model的时候链接使用 eg : M('','', 'MYSQL_CRSAPI)
4. 默认不支持嵌套
$model = M('', '', 'MYSQL_CRSAPI'); try { // 开启事务 $model->startTrans(); // check id $id = I('get.id', '' , 'intval'); if (!$id) { throw new \Exception("请刷新页面后, 再次尝试编辑"); } // init params $data = I('post.'); $data['id'] = $id; // check property $data = D('AdminApikey')->filterData($data); // save account $account_data = [ 'owner' => $data['owner'], 'active' => $data['active'], 'apikey' => $data['apikey'], 'validuntil' => $data['validuntil'], 'updated_at' => time(), ]; $account_save_result = $model->table('admin_apikey')->where("id=$id")->save($account_data); // save account property if ($account_save_result !== false) { $field_list = D('DictApictrlFields') ->where('status=1') ->field('name,remark') ->select(); foreach ($field_list as $filed) { $index = $filed['name']; $property[$index] = isset($data[$index]) ? $data[$index] : ''; } $property_result = D('AdminApictrl')->setInfo($id, $property); } // save api fields if (isset($property_result) && $property_result !== false) { $api_field_result = D('AdminApikeyFields')->updateInfo($id, $data['out_fields']); } $account_save_result = false; // rollback where add action failed if ($account_save_result === false || !isset($property_result) || ($property_result === false) || !isset($api_field_result) || ($api_field_result === false)) { throw new \Exception('账户更新失败, 请重新尝试'); } } catch (\Exception $e) { // rollback $model->rollback(); $this->__Return($e->getMessage()); } // commit $model->commit(); $this->__Return('账号更新成功','', 'tip_success'); }
相关文章推荐
- thinkphp 的事务回滚处理 和 原始PHP的事务回滚实例
- thinkPHP批量处理数据,并开启事务提交,完整实例
- thinkphp3.2源码----获取并保存模型对象与数据库连接实例
- PHPExcel+Thinkphp3.2 的一个简单实例
- thinkphp 3.2 视图模型 实例 视图查询结果 二维数组 合并
- thinkphp 3.2视图里添加URL参数 实例
- thinkphp3.2+PHPExcel导出查询数据到excel表格的实例
- 简单的thinkPHP3.2运行实例。
- thinkphp 多表事务操作
- Thinkphp3.2 行为扩展和插件(Hook)实例详解
- ThinkPHP3.2中Widget实例的使用
- Thinkphp3.2 行为扩展和插件(Hook)实例详解
- thinkphp 多表事务处理
- ThinkPHP3.2 学习与实例开发 独立分组(一)
- PHPExcel导入导出 若在thinkPHP3.2中使用(无论实例还是静态调用(如new classname或classname::function)都必须加反斜杠,因3.2就命名空间,如/classname
- Thinkphp 多表事务
- Thinkphp事务操作实例(推荐)
- thinkphp 多表事务操作
- 采用thinkphp中f方法实现快速缓存实例
- ThinkPHP实现事务回滚示例代码