Behavior to handle saving multiple many to many related records in Yii2.
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.
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);
}
}