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 ¶
- Installation
- Array Output
- Using Transaction
- Use Normal Save
- Add Validation At Main Model
- It Works On Auto Incremental PK Or Not (I Have Tried Use UUID)
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 ~~~ <> #<> : <> My Related Model #1 : Attribute is required ~~~
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.