Fix #17881: yii\db\Query::queryScalar() wasn’t reverting the select, orderBy, limit, and offset params if an exception occurred

This commit is contained in:
Brandon Kelly
2020-02-21 01:50:50 -08:00
committed by GitHub
parent 1f8ca7b7b1
commit 79dbd91246
2 changed files with 14 additions and 1 deletions

View File

@ -11,6 +11,7 @@ Yii Framework 2 Change Log
- Bug #17829: `yii\helpers\ArrayHelper::filter` now correctly filters data when passing a filter with more than 2 levels (rhertogh)
- Enh #7622: Allow `yii\data\ArrayDataProvider` to control the sort flags for `sortModels` through `yii\data\Sort::sortFlags` property (askobara)
- Bug #17863: `\yii\helpers\BaseInflector::slug()` doesn't work with an empty string as a replacement argument (haruatari)
- Bug #17881: `yii\db\Query::queryScalar()` wasnt reverting the `select`, `orderBy`, `limit`, and `offset` params if an exception occurred (brandonkelly)
- Bug #17875: Use `move_uploaded_file()` function instead of `copy()` and `unlink()` for saving uploaded files in case of POST request (sup-ham)

View File

@ -461,13 +461,25 @@ class Query extends Component implements QueryInterface, ExpressionInterface
$this->orderBy = null;
$this->limit = null;
$this->offset = null;
$command = $this->createCommand($db);
$e = null;
try {
$command = $this->createCommand($db);
} catch (\Exception $e) {
// throw it later
} catch (\Throwable $e) {
// throw it later
}
$this->select = $select;
$this->orderBy = $order;
$this->limit = $limit;
$this->offset = $offset;
if ($e !== null) {
throw $e;
}
return $command->queryScalar();
}