siddthartha/yii2-relational-set

There is no license information available for the latest version (dev-master) of this package.

Represents Yii2 m2m junction relation as PK-array field

dev-master 2017-04-05 09:22 UTC

This package is not auto-updated.

Last update: 2024-04-28 00:26:56 UTC


README

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!