Yii2 many to many behavior
, (*1)
This behavior allows to update or delete relations in the junction table, which are described in the model with
via()
or
viaTable()., (*2)
Behavior doesn't use transaction. Use this method to do transactions()
in the model or other way., (*3)
Install
php composer.phar require evgeny-gavrilov/yii2-many-to-many
Usage
Connection of behavior and description of the relation in the model
class User extends ActiveRecord
{
public function behaviors()
{
return [
EvgenyGavrilov\behavior\ManyToManyBehavior::className()
];
}
public function getGroups()
{
return $this->hasMany(Group::className(), ['id' => 'group_id'])->viaTable('user_group', ['user_id' => 'id']);
}
}
Usage in the code
$user = User::findOne(1);
// Add new or update relation
$model->setRelated('groups', [1]);
// or
$model->setRelated('groups', [1, 2]);
$model->save();
// Add or update the data with the remove old relations
$model->setRelated('groups', [1, 2], true);
$model->save();
// Delete all relations
$model->setRelated('groups', [], true);
$model->save();