Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fixes #1641: Added BaseActiveRecord::updateAttributes()
  • Loading branch information
qiangxue committed Dec 26, 2013
1 parent 68cb074 commit 7eccd9d
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 1 deletion.
1 change: 1 addition & 0 deletions framework/CHANGELOG.md
Expand Up @@ -31,6 +31,7 @@ Yii Framework 2 Change Log
- Enh #1581: Added `ActiveQuery::joinWith()` and `ActiveQuery::innerJoinWith()` to support joining with relations (qiangxue)
- Enh #1601: Added support for tagName and encodeLabel parameters in ButtonDropdown (omnilight)
- Enh #1611: Added `BaseActiveRecord::markAttributeDirty()` (qiangxue)
- Enh #1641: Added `BaseActiveRecord::updateAttributes()` (qiangxue)
- Enh: Added `favicon.ico` and `robots.txt` to defauly application templates (samdark)
- Enh: Added `Widget::autoIdPrefix` to support prefixing automatically generated widget IDs (qiangxue)
- Enh: Support for file aliases in console command 'message' (omnilight)
Expand Down
31 changes: 30 additions & 1 deletion framework/yii/db/BaseActiveRecord.php
Expand Up @@ -637,7 +637,36 @@ public function update($runValidation = true, $attributes = null)
}

/**
* @see CActiveRecord::update()
* Updates the specified attributes.
*
* This method is a shortcut to [[update()]] when data validation is not needed
* and only a list of attributes need to be updated.
*
* You may specify the attributes to be updated as name list or name-value pairs.
* If the latter, the corresponding attribute values will be modified accordingly.
* The method will then save the specified attributes into database.
*
* Note that this method will NOT perform data validation.
*
* @param array $attributes the attributes (names or name-value pairs) to be updated
* @return integer|boolean the number of rows affected, or false if [[beforeSave()]] stops the updating process.
*/
public function updateAttributes($attributes)
{
$attrs = [];
foreach ($attributes as $name => $value) {
if (is_integer($name)) {
$attrs[] = $value;
} else {
$this->$name = $value;
$attrs[] = $name;
}
}
return $this->update(false, $attrs);
}

/**
* @see update()
* @throws StaleObjectException
*/
protected function updateInternal($attributes = null)
Expand Down

0 comments on commit 7eccd9d

Please sign in to comment.