Browse Source

* Fixed Model::loadMultiple() when populating from formName()

* Documentation corrections for data population and quoting names in SQL query
tags/2.0.0-beta
Sw3rtas 11 years ago
parent
commit
ab27d16efd
  1. 4
      docs/guide/database-basics.md
  2. 32
      docs/guide/upgrade-from-v1.md
  3. 2
      framework/yii/base/Model.php

4
docs/guide/database-basics.md

@ -136,11 +136,11 @@ Quoting table and column names
Most of the time you would use the following syntax for quoting table and column names: Most of the time you would use the following syntax for quoting table and column names:
```php ```php
$sql = "SELECT COUNT({{$column}}) FROM [[$table]]"; $sql = "SELECT COUNT([[$column]]) FROM {{$table}}";
$rowCount = $connection->createCommand($sql)->queryScalar(); $rowCount = $connection->createCommand($sql)->queryScalar();
``` ```
In the code above `{{X}}` will be converted to properly quoted column name while `[[Y]]` will be converted to properly In the code above `[[X]]` will be converted to properly quoted column name while `{{Y}}` will be converted to properly
quoted table name. quoted table name.
The alternative is to quote table and column names manually using [[\yii\db\Connection::quoteTableName()]] and The alternative is to quote table and column names manually using [[\yii\db\Connection::quoteTableName()]] and

32
docs/guide/upgrade-from-v1.md

@ -163,6 +163,26 @@ A model is now associated with a form name returned by its `formName()` method.
mainly used when using HTML forms to collect user inputs for a model. Previously in 1.1, mainly used when using HTML forms to collect user inputs for a model. Previously in 1.1,
this is usually hardcoded as the class name of the model. this is usually hardcoded as the class name of the model.
A new methods called `load()` and `Model::loadMultiple()` is introduced to simplify the data population from user inputs
to a model. For example,
```php
$model = new Post;
if ($model->load($_POST)) {...}
// which is equivalent to:
if (isset($_POST['Post'])) {
$model->attributes = $_POST['Post'];
}
$model->save();
$postTags = array();
$tagsCount = count($_POST['PostTag']);
while($tagsCount-- > 0){
$postTags[] = new PostTag(array('post_id' => $model->id));
}
Model::loadMultiple($postTags, $_POST);
```
Yii 2.0 introduces a new method called `scenarios()` to declare which attributes require Yii 2.0 introduces a new method called `scenarios()` to declare which attributes require
validation under which scenario. Child classes should overwrite `scenarios()` to return validation under which scenario. Child classes should overwrite `scenarios()` to return
@ -196,18 +216,6 @@ Controllers
The `render()` and `renderPartial()` methods now return the rendering results instead of directly The `render()` and `renderPartial()` methods now return the rendering results instead of directly
sending them out. You have to `echo` them explicitly, e.g., `echo $this->render(...);`. sending them out. You have to `echo` them explicitly, e.g., `echo $this->render(...);`.
A new method called `populate()` is introduced to simplify the data population from user inputs
to a model. For example,
```php
$model = new Post;
if ($model->load($_POST)) {...}
// which is equivalent to:
if (isset($_POST['Post'])) {
$model->attributes = $_POST['Post'];
}
```
Widgets Widgets
------- -------

2
framework/yii/base/Model.php

@ -694,7 +694,7 @@ class Model extends Component implements \IteratorAggregate, \ArrayAccess
$success = true; $success = true;
} }
} elseif (isset($data[$scope][$i])) { } elseif (isset($data[$scope][$i])) {
$model->setAttributes($data[$scope[$i]]); $model->setAttributes($data[$scope][$i]);
$success = true; $success = true;
} }
} }

Loading…
Cancel
Save