以下大部分内容来自《ThinkPHP5高阶实战教程 --诠释为API开发而生》

控制器基类

快速修改

/**
     * 快速修改
     * #User: Mikkle
     * #Email:776329498@qq.com
     * @param $array
     * @param bool|false $validate_name
     * @param string $model_name
     * @return array 返回code码
     */
    protected function editData($parameter = false, $validate_name = false, $model_name = false, $save_data = [])
    {
        if (empty($save_data)) { //要保存的数组为空则判断
            if ($parameter != false && is_array($parameter)) { //整理参数数组存在
                $data = $this->buildParam($parameter);  //生成参数数组
            } else {
                $data = $this->request->post(); //直接获取post参数
            }
        } else {
            $data = $save_data; //赋值要保存的数组给$data
        }
        if (!$data) return $this->showReturnCode(1004); //返回参数错误
        if ($this->checkLoginToken() && !isset($data['uuid'])) $data['uuid'] = $this->uuid; //判断是否全局登录 如果登陆 附加上用户的UUID
        if ($validate_name != false) {
            $result = $this->validate($data, $validate_name);
            if (true !== $result) return $this->showReturnCodeWithOutData(1003,$result ); //给定验证器参数则使用验证器验证
        }
        $model_edit = Loader::model($model_name);
        //dump($model_edit);
        if (!$model_edit) return $this->showReturnCode(1010);
        return $model_edit->editData($data); //在模型中定义editData方法,调用该方法。
    }

    protected function doModelAction($param_data,$validate_name = false, $model_name = false,$action_name='editData'){

        if ($validate_name != false) {
            $result = $this->validate($param_data, $validate_name);
            if (true !== $result) return $this->showReturnCodeWithOutData(1003,  $result);
        }
        $model_edit = Loader::model($model_name);
        if (!$model_edit) return $this->showReturnCode(1010);
        return $model_edit->$action_name($param_data);
    }

模型基类

/**
     * 根据有Id修改信息 无Id 新增信息
     * #User: Mikkle
     * #Email:776329498@qq.com
     * #Date:
     * @param $data
     * @return false|int|string
     * @throws
     */
    public function editData($data){
        if (isset($data['id'])){
            if (is_numeric($data['id']) && $data['id']>0){
                    $save = $this->allowField(true)->save($data,[ 'id' => $data['id']]);
            }else{
                $save  = $this->allowField(true)->save($data);
            }
        }else{
            $save  = $this->allowField(true)->save($data);
        }
        if ( $save == 0 || $save == false) {
            $res=[  'code'=> 1009,  'msg' => '数据更新失败', ];
        }else{
            $res=[  'code'=> 1001,  'msg' => '数据更新成功',  ];
        }
        return $res;
    }

这一套方法看起来很灵活,但是相对于面向对象思维有些不协调,个人不推荐使用