Many2ManyBehavior
is a Yii PHP Framework 2 behavior that facilitates managing many-2-many relationships between models. It automatically handles the insertion, update, and deletion of related models.
The preferred way to install this extension is through composer.
Either run
composer require thtmorais/yii2-many-2-many "*"
or add
"thtmorais/yii2-many-2-many": "*"
to the require section of your composer.json
file.
Attach Many2ManyBehavior
to your model:
use thtmorais\many2many\Many2ManyBehavior;
class Model extends \yii\db\ActiveRecord
{
public function behaviors()
{
return [
[
'class' => Many2ManyBehavior::class,
'id' => 'id',
'attribute' => 'relations',
'relatedModel' => RelatedModel::class,
'relatedModelId' => 'id',
'relatedModelAttribute' => 'model_id',
'relatedModelValidate' => true
],
];
}
}
Property | Type | Description |
---|---|---|
id |
string |
Primary key of the source model. Defaults to 'id' . |
attribute |
string |
Attribute containing the relationships to be saved. |
relatedModel |
string |
Class name of the related model. |
relatedModelId |
string |
Primary key of the related model. Defaults to 'id' . |
relatedModelAttribute |
string |
Foreign key in the related model referencing the source model. |
relatedModelValidate |
bool |
Whether to validate the related model before saving. Defaults to true . |
EVENT_AFTER_INSERT
: Saves related models after the source model is inserted.EVENT_AFTER_UPDATE
: Updates related models when the source model is updated.EVENT_AFTER_DELETE
: Deletes related models when the source model is deleted.
Handles the insertion of related models when the source model is inserted.
Handles the update of related models when the source model is updated.
Deletes related models when the source model is deleted.
$model = new Model();
$model->relations = [
['id' => 1, 'name' => 'Item 1'],
['id' => 2, 'name' => 'Item 2']
];
$model->save();