Fixes #226: atomic operations and transaction support in AR.

This commit is contained in:
resurtm
2013-05-13 20:38:03 +06:00
parent 0f7f193623
commit a54c1cd684
4 changed files with 225 additions and 74 deletions

View File

@@ -446,3 +446,7 @@ $customers = Customer::find()->olderThan(50)->all();
The parameters should follow after the `$query` parameter when defining the scope method, and they
can take default values like shown above.
### Atomic operations and scenarios
TBD

View File

@@ -1,15 +1,50 @@
ActiveRecord
============
Scenarios
---------
All possible scenario formats supported by ActiveRecord:
```php
public function scenarios()
{
return array(
// 1. attributes array
'scenario1' => array('attribute1', 'attribute2'),
// 2. insert, update and delete operations won't be wrapped with transaction (default mode)
'scenario2' => array(
'attributes' => array('attribute1', 'attribute2'),
'atomic' => array(), // default value
),
// 3. all three operations (insert, update and delete) will be wrapped with transaction
'scenario3' => array(
'attributes' => array('attribute1', 'attribute2'),
'atomic',
),
// 4. insert and update operations will be wrapped with transaction, delete won't
'scenario4' => array(
'attributes' => array('attribute1', 'attribute2'),
'atomic' => array(self::INSERT, self::UPDATE),
),
// 5. insert and update operations won't be wrapped with transaction, delete will
'scenario5' => array(
'attributes' => array('attribute1', 'attribute2'),
'atomic' => array(self::DELETE),
),
);
}
```
Query
-----
### Basic Queries
### Relational Queries
### Scopes