diff --git a/Database/ActiveQuery.php b/Database/ActiveQuery.php index a3caff81..12c34e46 100644 --- a/Database/ActiveQuery.php +++ b/Database/ActiveQuery.php @@ -266,7 +266,11 @@ class ActiveQuery extends Component implements ISqlBuilder */ public function batchUpdate(array $data): Command|array|bool|int|string { - return $this->execute($this->builder->update($data))->exec(); + $generate = $this->builder->update($data); + if (is_bool($generate)) { + return $generate; + } + return $this->execute(...$generate)->exec(); } /** diff --git a/Database/Base/BaseActiveRecord.php b/Database/Base/BaseActiveRecord.php index 41d583c0..a3ddc8f1 100644 --- a/Database/Base/BaseActiveRecord.php +++ b/Database/Base/BaseActiveRecord.php @@ -468,10 +468,13 @@ abstract class BaseActiveRecord extends Component implements IOrm, ArrayAccess $condition = [$this->getPrimary() => $this->getPrimaryValue()]; } - [$sql, $param] = SqlBuilder::builder(static::find()->where($condition))->update($param); + $generate = SqlBuilder::builder(static::find()->where($condition))->update($param); + if (is_bool($generate)) { + return $generate; + } $trance = $command->beginTransaction(); - if (!$command->createCommand($sql, $param)->save(false, $this)) { + if (!$command->createCommand(...$generate)->save(false, $this)) { $trance->rollback(); return false; }