ManyToManyBehavior.php 819 Bytes
<?php
    
    namespace artbox\core\behaviors;
    
    use yii\base\Behavior;
    use yii\db\ActiveRecord;
    
    /**
     * Class ManyToManyBehavior
     *
     * @package artbox\catalog\behaviors
     */
    class ManyToManyBehavior extends Behavior
    {
        /**
         * @param string         $name
         * @param ActiveRecord[] $models
         * @param array          $extraColumns
         */
        public function linkMany(string $name, array $models, array $extraColumns = [])
        {
            /**
             * @var ActiveRecord $owner
             */
            $owner = $this->owner;
            
            $owner->unlinkAll($name, true);
            
            foreach ($models as $model) {
                $owner->link($name, $model, $extraColumns);
            }
        }
    }