Yii 2 Models add functionality for load with relation (loadAll($POST)), & transactional save with relation (saveAll())
PLUS soft delete/restore feature!
Best work with mootensai/yii2-enhanced-gii
https://www.paypal.me/yohanesc
Endorse me on LinkedIn
https://www.linkedin.com/in/yohanes-candrajaya-b68394102/
The preferred way to install this extension is through composer.
Either run
$ composer require 'mootensai/yii2-relation-trait:dev-master'or add
"mootensai/yii2-relation-trait": "*"
to the require section of your composer.json file.
class MyModel extends ActiveRecord{
    use \mootensai\relation\RelationTrait;
}It takes a normal array of POST. This is the example
Array (
    $_POST['ParentClass'] => Array 
        (
            [attr1] => value1
            [attr2] => value2 
            // has many
            [relationName] => Array 
                ( 
                    [0] => Array 
                        (
                            [relAttr] => relValue1
                        )
                    [1] => Array 
                        (
                            [relAttr] => relValue1
                        )
                )
            // has one
            [relationName] => Array
                ( 
                    [relAttr1] => relValue1
                    [relAttr2] => relValue2
                )
        )
)
OR
Array (
    $_POST['ParentClass'] => ['attr1' => 'value1','attr2' => 'value2'],
    // Has One
    $_POST['RelatedClass'] => ['relAttr1' => 'value1','relAttr2' => 'value2'], 
    // Has Many
    $_POST['RelatedClass'] => Array
        (
            [0] => Array
                (
                    [attr1] => value1
                    [attr2] => value2
                )
            [1] => Array
                (
                    [attr1] => value1
                    [attr2] => value2
                )
        )      
)// sample at controller
if($model->loadAll(Yii:$app->request->post()) && $model->saveAll()){
    return $this->redirect(['view', 'id' => $model->id, 'created' => $model->created]);
}// I use this to send model & related through JSON / Serialize
print_r($model->getAttributesWithRelatedAsPost());Array
(
    [MainClass] => Array
        (
            [attr1] => value1
            [attr2] => value2
        )
    [RelatedClass] => Array
        (
            [0] => Array
                (
                    [attr1] => value1
                    [attr2] => value2
                )
        )
)
print_r($model->getAttributesWithRelated());Array
(
    [attr1] => value1
    [attr2] => value2
    [relationName] => Array
        (
            [0] => Array
                (
                    [attr1] => value1
                    [attr2] => value2
                )
        )
)
So your data will be atomic (see : http://en.wikipedia.org/wiki/ACID)
So your behaviors still works
$form->errorSummary($model);will give you
<<Related Class Name>> #<<index + 1>> : <<error message>>
My Related Model #1 : Attribute is required
See here if you want to use my behavior :
https://github.com/mootensai/yii2-uuid-behavior
Add this line to your Model to enable soft delete
private $_rt_softdelete;
function __construct(){
    $this->_rt_softdelete = [
        '<column>' => <undeleted row marker value>
        // multiple row marker column example
        'isdeleted' => 1,
        'deleted_by' => \Yii::$app->user->id,
        'deleted_at' => date('Y-m-d H:i:s')
    ];
}Add this line to your Model to enable soft restore
private $_rt_softrestore;
function __construct(){
    $this->_rt_softrestore = [
        '<column>' => <undeleted row marker value>
        // multiple row marker column example
        'isdeleted' => 0,
        'deleted_by' => 0,
        'deleted_at' => 'NULL'
    ];
}It use all Yii's Active Query or Active Record to execute DB command
Please create issue if you got a problem or an idea for enhancement