Yii 2.0: yii2-relation-trait

Yii 2 Models add functionality for load with relation, & transactional save with relation
1 follower

Installation

The preferred way to install this extension is through composer.

Either run

$ composer require mootensai/yii2-relation-trait

or add

"mootensai/yii2-relation-trait": "dev-master"

to the require section of your composer.json file.

Github : mootensai/yii2-relation-trait

It takes a normal array of POST. This is the example

$POST['ParentClass'] = ['attr1' => 'value1','attr2' => 'value2'];
$POST['RelatedClass'][0] = ['attr1' => 'value1','attr2' => 'value2'];

usage at controller

public function actionCreate(){
    $model = new MyModel;
    if($model->loadRelated(Yii:$app->request->post()) && $model->saveRelated()){
        return $this->redirect('view', 'id' => $model->id, 'created' => $model->created]);
    }
}

usage at model

class MyModel extends ActiveRecord{
    use mootensai\relation\RelationTrait;
}

Features

Array Output

// 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
                )
        )
)

Using Transaction

Your data will be atomic (see : ACID)

Use Normal Save

so your behavior still works

Add Validation At Main Model

$form->errorSummary($model);

will give you

<<Related Class Name>> #<<index + 1>> : <<error message>>
My Related Model #1 : Attribute is required

It Works On Auto Incremental PK Or Not (I Have Tried Use UUID)

Be the first person to leave a comment

Please to leave your comment.

Create extension
Downloads
No downloadable files yet