From cada515dc76c22f4edfafb4372da6384c9c048a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=91=E6=9E=97?= Date: Wed, 19 Jan 2022 11:30:58 +0800 Subject: [PATCH] =?UTF-8?q?Revert=20"=E6=94=B9=E5=90=8D"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit fdf58326 --- Model.php | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/Model.php b/Model.php index 7f51360..a06114a 100644 --- a/Model.php +++ b/Model.php @@ -114,8 +114,7 @@ class Model extends Base\Model } $model = new static(); - $database = $model->getConnection(); - $database->beginTransaction(); + $database = $model->getConnection()->beginTransaction(); try { /** @var static $select */ $select = static::query()->where($condition)->first(); @@ -152,16 +151,23 @@ class Model extends Base\Model return $logger->addError(FIND_OR_CREATE_MESSAGE, 'mysql'); } - /** @var static $select */ - $select = static::query()->where($condition)->first(); - if (empty($select)) { - $select = duplicate(static::class); + $database = (new static())->getConnection()->beginTransaction(); + try { + /** @var static $select */ + $select = static::query()->where($condition)->first(); + if (empty($select)) { + $select = duplicate(static::class); + } + $select->attributes = $attributes; + if (!$select->save()) { + throw new Exception($select->getLastError()); + } + $database->commit(); + return $select; + } catch (\Throwable $throwable) { + $database->rollback(); + return $logger->addError($throwable->getMessage(), 'mysql'); } - $select->attributes = $attributes; - if (!$select->save()) { - $select = $logger->addError($select->getLastError(), 'mysql'); - } - return $select; }