Skip to content

Latest commit

 

History

History
62 lines (49 loc) · 1.32 KB

README.md

File metadata and controls

62 lines (49 loc) · 1.32 KB

yii2-relational-set

Represents Yii2 m2m junction relation as array field. Stores it's changes as difference without cleaning relation.

Installation

The preferred way to install this extension is through composer.

Either run

$ composer require siddthartha/yii2-relational-set

or add

"siddthartha/yii2-relational-set": "*"

to the require section of your composer.json file.

Usage

Host model

class Host extends \yii\db\ActiveRecord
{
    public $_slaves;

    /**
     * {@inheritdoc}
     */
    public function behaviors()
    {
        return [
            'sets' => [
                'class' => \siddthartha\behaviors\RelationalSetBehavior::class,
                'attributes' => [
                    '_slaves' => 'slaves',
                ],
            ],
        ];
    }

    /**
     * @return \yii\db\ActiveQueryInterface
     */
    public function getSlaves()
    {
        return $this->hasMany(Slave::class, ['id' => 'id_slave'])
            ->viaTable(HostSlave::tableName(), ['id_host' => 'id'])
            ->indexBy('id');
    }
}

View code example

    <?=$form->field( $model, '_slaves')->checkboxList(/*...*/)?>

Any changes to relation (junction table) will be executed as insert and/or update the needed difference only!