webman-admin 中的crud的增删改需不需要事务加try-catch提交或回滚

kele

问题描述

看fastadmin源码中crud基类中的 增删改 使用了事务加try-catch提交或回滚, webman-admin的crud基类的 增删改 好像直接就自动提交了, 有什么区别吗? 基础一般请赐教^^

fastadmin 的新增

$result = false;
Db::startTrans();
try {
    //是否采用模型验证
    if ($this->modelValidate) {
        $name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
        $validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : $name) : $this->modelValidate;
        $this->model->validateFailException()->validate($validate);
    }
    $result = $this->model->allowField(true)->save($params);
    Db::commit();
} catch (ValidateException|PDOException|Exception $e) {
    Db::rollback();
    $this->error($e->getMessage());
}
if ($result === false) {
    $this->error(__('No rows were inserted'));
}
$this->success();

webman-admin 的新增

$primary_key = $this->model->getKeyName();
$model_class = get_class($this->model);
$model = new $model_class;
foreach ($data as $key => $val) {
    $model->{$key} = $val;
}
$model->save();
return $primary_key ? $model->$primary_key : null;
535 2 0
2个回答

tanhongbin

操作单个表,你加事务干啥??事务都是都个表才有需要,你看admin都是单个表,所以不需要事务

  • kele 2023-04-14

    所以, 如果是多表操作的话在重写crud基类方法的时候还是使用事务的是吧

ersic

这个没标准,看业务需求

年代过于久远,无法发表回答
🔝