事务的调用在mysql里需要注意下数据库引擎,处理前先查看一下
删除方法:
点击(此处)折叠或打开
- public function del()
- {
- $cate = new CateModel;
- $id=input('id');
- $selectID=$cate->find($id);
- if($id == ''){
- $this->error('请不要恶意测试');
- }
- //调用事务删除
- $del=$cate->shiwu($id);
- if($del == true){
- $this->success('删除成功/!');
- }else{
- $this->error('删除失败/!');
- }
- }
调用事务删除:
点击(此处)折叠或打开
- //事务处理删除
- public function shiwu($id)
- {
- $cates=Cate::getChildId($id);
- Db::startTrans($id,$cates); //$cates是所有子分类的一维数组
- try{
- Db::table('tp_cate')->where('id','in',$cates)->delete(); //删除所有子分类
- Db::table('tp_cate')->where('id',$id)->delete(); //删除自身
- // 提交事务
- Db::commit();
- return true;
- } catch (\Exception $e) {
- // 回滚事务
- Db::rollback();
- return false;
- }
- }
getChildId方法:
点击(此处)折叠或打开
- public function getChildId($id)
- {
- $cateres=Cate::select();
- return $this->_getChildId($cateres,$id);
- }
- public function _getChildId($cateres,$id)
- {
- static $arr = array();
- foreach ($cateres as $k => $v) {
- if($id == $v['pid']){
- $arr[] = $v['id'];
- $this->_getChildId($cateres,$v['id']);
- }
- }
- return $arr;
- }