ManyManyActiveRecord class for simple and quick saving MANY_MANY relation data in models.
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
ManyManyActiveRecord.php Minor doc fixes May 20, 2014 Coding style improvements, indents fixed Nov 12, 2013


The ManyManyActiveRecord YII extension class adds up functionality of saving MANY_MANY relation field value using simple arrays.


Yii 1.1 or above


To use this extension:

  1. copy ManyManyActiveRecord to your components directory

  2. check that your config have autoloaded

    'import'=>array( ... 'application.components.*', ...

  3. extend your model (which has MANY_MANY relation), category for example

    class Category extends ManyManyActiveRecord ...


If Category has:

'posts'=>array(self::MANY_MANY, 'Post', 'tbl_post_category(category_id, post_id)')

Create tbl_post_category (category_id, post_id) table and then

you can set relations by (with erasing old ones)

$model = Category::model()->findByPk(10);
$model->setRelationRecords('posts',array(1, 2, 3));

or you can add new relations (without deletions of old ones)

$model = Category::model()->findByPk(10);
$model->addRelationRecords('posts',array(1, 2, 3));

or you can remove some relations

$model = Category::model()->findByPk(10);

or you can remove all relation records

$model = Category::model()->findByPk(10);

or if you need to save additional data in tbl_post_category (like user_id for example) you add relations with $additionalFields

$model = Category::model()->findByPk(10);
$model->addRelationRecords('posts',array(1, 2, 3), array('user_id' => Yii::app()->user->id));

Each of this method saves data to database, you don't need to save the model.