zoukankan      html  css  js  c++  java
  • [PHP]更新中间关联表数据的两种思路

    --------------------------------------------------------------------------------------------------------------

    中间关联表:这里的中间表只存表1的主键和表2的主键,即多对多的形式。

    (执行数据添加和删除为框架内部方法,不属于思路部分)

    /*
    |-----------------------------------------------------------
    |方法一:先全部删除旧数据,后添加新数据
    |@chenwei <www.farwish.com> |-----------------------------------------------------------
    */
    $res = $this->classes->classEdit($id, $data);  //修改主表数据 if($res) {   //先删除关联表数据   $bool = $this->lesson_classes->lessonClassesDel($id);   if($bool)   {
        //循环组装条件,添加数据     
    foreach($lesson_ids as $val)
        {       
    $arr = array('class_id'=>$id, 'lesson_id'=>$val);    //数据
          
    $res = $this->lesson_classes->lessonClassesAdd($arr);  //执行添加     }   }   $this->show_tips('操作成功!'); } else {   $this->show_tips('操作失败!'); }

    //弊端:大批量删除数据这块儿不安全,存在一定程度的安全隐患。
    /*
    |---------------------------------------------------------
    |方法二:只添加需要的,只删要删的
    |@chenwei <www.farwish.com> |---------------------------------------------------------
    */ //库中查出的旧数据:
    $arr_old (处理过的一维数组) //提交过来的新数据:$arr_new (得到的一维数组) $intersect = array_intersect($arr_old, $arr_new);   //交集(需要保留的部分,不用处理) $result_del = array_diff($arr_old, $intersect);    //旧数据中需要删除的 $result_add = array_diff($arr_new, $intersect);    //新数据中需要增加的 //添加新增数据 if($result_add && is_array($result_add)) { foreach($result_add as $val) { $data_add = array('class_id'=>$id, 'lesson_id'=>$val);       //数据 $bool_add = $this->lesson_classes->lessonClassesAdd($data_add);  //执行添加 } } //删除需要清除的数据 if($result_del && is_array($result_del)) { foreach($result_del as $val) { $bool_del = $this->lesson_classes->lessonClassesDel($id, $val); //执行删除 } }

    if($bool_add && $bool_del)
    {
      $this->show_tips('操作成功!');
    }
    else
    {
      $this->show_tips('操作失败!');
    }


    //特点:有针对性的添加数据和删除数据,较第一种方法,安全性高

    如果有不正确之处或更好的处理方式,请留言交流。

    Link: http://www.cnblogs.com/farwish/p/3938575.html

    @黑眼诗人 <www.farwish.com>

  • 相关阅读:
    logging模块
    解压序列
    python碎片
    python碎片化
    [转]pycharm快捷键
    ios开发之自定义textView
    iOS 开发之字典写入文件
    iOS 开发之内存泄漏问题
    自己写小测试 内容:添加,删除,修改,详情,导出,上传文件,easyui tree树
    使用 jxl 实现复杂的excel 表格导出 java代码
  • 原文地址:https://www.cnblogs.com/farwish/p/3938575.html
Copyright © 2011-2022 走看看