tp5批量添加数据,批量修改数据

项目功能
标题

  在一次项目开发中使用TP5框架开发,有个功能是向产品上传和修改.但是上传和修改是比较简单的,在上传的同时还需要实现

多个产品服务详情的添加和修改.经过一天半的研究,才完成该功能.

1.首先是多个产品上传,在前端页面中

<input type="text" class="form-control" name="gp_time[]" value="{$vo.gp_time}" aria-required="true" style="width:300px;">

各个字段使用name='gp_name[]'数组形式提交.这样当点击button按钮提交form表单时获得多个一维数组.

2.把多个一维数组用foreach修改为需要的二维数组.实例代码如下:

   //套餐详情添加
            foreach ($_POST['gp_body'] as $item=>$value){                  //把接收的值(多个一位数组转)化为二维数组
                $allarray[$item]['gp_body']=$_POST['gp_body'][$item];
                $allarray[$item]['gp_effect']=$_POST['gp_effect'][$item];
                $allarray[$item]['gp_equipment']=$_POST['gp_equipment'][$item];
                $allarray[$item]['gp_product']=$_POST['gp_product'][$item];
                $allarray[$item]['gp_time']=$_POST['gp_time'][$item];
                $allarray[$item]['gp_price']=$_POST['gp_price'][$item];
                $allarray[$item]['gp_name']=$_POST['gp_name'][$item];
                $allarray[$item]['gp_process']=$_POST['gp_process'][$item];
                $allarray[$item]['gp_m_id']=$su['id'] ;
                $allarray[$item]['gp_ms_id']=$ms_id['id'] ;
                $allarray[$item]['gp_msg_id']=$msg_id ;
            }
            foreach ($allarray as $k => $v){            //forreach 遍历如果一位数组中有指定8个值为空则删除对应数组
               if ($allarray[$k]['gp_body']==''&& $allarray[$k]['gp_effect']==''&&  $allarray[$k]['gp_equipment']==''&&
                   $allarray[$k]['gp_product']==''&&  $allarray[$k]['gp_time']==''&&  $allarray[$k]['gp_price']==''&&
                   $allarray[$k]['gp_name']==''&& $allarray[$k]['gp_process']=='')
                    { unset($allarray[$k]);}
                }
            $pack=new  MerchantStoreGoodsPack();
            $resultpack=$pack->saveAll($allarray);  //用模型方法saveAll即可实行多条数据的新增

3.当进入修改页面实现商品详情的修改,直接上代码:修改时首先要进行一个判断,当服务详情只有一个时,其他的服务详情没有对应表中的id使用新增的方法添加不上.因为每一个商品详情都从前端传递过来它的ID所以,对ID进行判断,当ID为空的时候执行的是新增方法,否则执行的是修改方法.实际代码如下:

  $pack=new MerchantStoreGoodsPack();
                $ms_id=Db::name('merchant_stroe')->where('m_id',$su['id'])->field('id')->find();//获取关联表的ms_id值
                foreach ($_POST['gp_body'] as $item=>$value){           //把接收的值多个一位数组转化为二维数组
                    $allarray[$item]['gp_id']=$_POST['gp_id'][$item];
                    $allarray[$item]['gp_body']=$_POST['gp_body'][$item];
                    $allarray[$item]['gp_effect']=$_POST['gp_effect'][$item];
                    $allarray[$item]['gp_equipment']=$_POST['gp_equipment'][$item];
                    $allarray[$item]['gp_product']=$_POST['gp_product'][$item];
                    $allarray[$item]['gp_process']=$_POST['gp_process'][$item];
                    $allarray[$item]['gp_time']=$_POST['gp_time'][$item];
                    $allarray[$item]['gp_price']=$_POST['gp_price'][$item];
                    $allarray[$item]['gp_name']=$_POST['gp_name'][$item];
                    $allarray[$item]['gp_m_id']=$su['id'] ;
                    $allarray[$item]['gp_ms_id']=$ms_id['id'] ;
                    $allarray[$item]['gp_msg_id']=$_POST['id'] ;
                }
                foreach ($allarray as $k =>$v){
                  if ($allarray[$k]['gp_body']==''&& $allarray[$k]['gp_effect']==''&&  $allarray[$k]['gp_equipment']==''&&
                        $allarray[$k]['gp_product']==''&&  $allarray[$k]['gp_time']==''&&  $allarray[$k]['gp_price']==''&&
                        $allarray[$k]['gp_name']==''&& $allarray[$k]['gp_process']=='')            //如果不存在服务详情  执行新增操作
                        { unset($allarray[$k]) ;}
                  if ($v['gp_id']==''){                             //删除ID执行新增操作
                            unset($allarray[$k]['gp_id']);
                        }
                }
                $result=$pack->saveAll($allarray);

修改同样使用的是saveALL方法.从手册中可以查看到saveALL的详细用法,

  • 实例化模型后调用save方法表示新增;
  • 查询数据后调用save方法表示更新;
  • save方法传入更新条件后表示更新;

以上就是这次是想多条服务详情的添加及修改方法.从业多年,有些基础知识因为使用不多都忘记了.在此记录一下希望对遇到这个问题的朋友有所帮助

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值