Skip to content

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

License

Notifications You must be signed in to change notification settings

cornernote/yii2-linkall

Repository files navigation

Yii2 LinkAll

Latest Version Software License Build Status Coverage Status Quality Score Total Downloads

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);
    }
}

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages