更新修改数据

数据更新主要用于更新数据状态,比如:数据禁用、数据启用、更改状态等;

若在模型中需要使用到 SaveHelper 快捷查询器,模型需要继承 \think\admin\Model 类;

若在控制器需要使用到 SaveHelper 快捷查询器,控制器需要继承 \think\admin\Controller 类;

前端需要提供需要修改的数据 ID 以及数据状态值,当然也可以后第二个参数指定(强烈建议配置第二个字段)

这个地方可能存在数据恶意修改的情况,所有指定第二个参数非常有必要,可以配合验证器 _vali() 和限定条件 $where 变量使用。

// 1.0 模型用法
// 参数 $data 为待修改数据
// 参数 $field 为主键字段
// 参数 $where 为修改查询条件
MyModel::mSave($data, $field, $where);

// 1.1 模型通用更新
MyModel::mSave();

// 1.2 配合验证器使用
MyModel::mSave($this->_vali([
    'status.require' => '修改状态不能为空!',
    'status.in:0,1'  => '修改状态范围无效!',
]));

// 1.3 配置验证器和限制条件
MyModel::mSave($this->_vali([
    'status.require' => '修改状态不能为空!',
    'status.in:0,1'  => '修改状态范围无效!',
]), 'id', [
    'uuid'    => $this->uuid,
    'deleted' => 0,
]);


// 2.0 控制器用法
// 参数 $dbQuery 为模型名称
// 参数 $data 为待修改数据
// 参数 $field 为主键字段
// 参数 $where 为修改查询条件
$this->_save($dbQuery, $data, $field, $where);

// 2.1 通用修改器
$this->_save('MyModel');

// 2.2 配合验证器使用
$this->_save('MyModel', $this->_vali([
    'status.require' => '修改状态不能为空!',
    'status.in:0,1'  => '修改状态范围无效!',
]));

另外控制器也提供了结果回调操作

/**
 * 修改数据状态
 * @auth true 
 */
public function save(){
    MyModel::mSave($this->_vali([
        'status.require' => '修改状态不能为空!',
        'status.in:0,1'  => '修改状态范围无效!',
    ]));
}

### 控制器通常结果回调处理
protected function _save_result(bool $result){
  // 可以根据 $result 状态返回结果 
  // 失败 $this->error(MESSAGE);
  // 成功 $this->success(MESSAGE);
}

### 当一个控制器存在多个 save 操作时,可以指定回调前缀
protected function _state_save_result(bool $result){
  // 可以根据 $result 状态返回结果 
  // 失败 $this->error(MESSAGE);
  // 成功 $this->success(MESSAGE);
}

如果是在 ThinkAdmin 后台基于 admin.js 的情况下,可台使用 data-action 来与 SaveHelper 配合使用。

前端提交上来的内容 data-value 支持多组数据,以英文分号 ; 分隔,健与值以英文 # 分隔,如:data-value="id#1;status#0;"

Last Updated:
Contributors: 邹景立