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

README.md

yii-manymanyactiverecord

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

Requirements

Yii 1.1 or above

Installation

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 ...

Usage

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);
$model->removeRelationRecords('posts',array(1,2,3));

or you can remove all relation records

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

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.