yii2-linkall

Behavior to handle saving multiple many to many related records in Yii2

OTHER License

Downloads
83.9K
Stars
25
Committers
1

Yii2 LinkAll

Behavior to handle saving multiple many to many related records in Yii2.

Installation

The preferred way to install this extension is through composer.

Either run

$ composer require cornernote/yii2-linkall "*"

or add

"cornernote/yii2-linkall": "*"

to the require section of your composer.json file.

Usage

Post Model

class Post extends ActiveRecord
{
    public function behaviors()
    {
        return [
            \cornernote\linkall\LinkAllBehavior::className(),
        ];
    }

    public function getTags()
    {
        return $this->hasMany(Tag::className(), ['id' => 'tag_id'])
            ->viaTable('post_to_tag', ['post_id' => 'id']);
            //->via('postToTag');
    }
}

Tag Model

class Tag extends ActiveRecord
{

}

Post Controller

class PostController extends Controller
{
    public function actionExample()
    {
        $post = Post::findOne(1);
        $tags = [Tag::findOne(2), Tag::findOne(3)];
        
        $extraColumns = []; // extra columns to be saved to the many to many table
        $unlink = true; // unlink tags not in the list
        $delete = true; // delete unlinked tags
        
        $post->linkAll('tags', $tags, $extraColumns, $unlink, $delete);
    }
}