yii-auto-stat-relation Enhanced ActiveRecord class, that automatically adds STAT relations for each HAS_MANY and MANY_MANY

  1. Requirements
  2. Usage
  3. Resources

This extension allows you to get count of HAS_MANY or MANY_MANY related objects without using slow operations like count($model->relationName) or manually adding STAT relation to the relations() array.

It could help, when you have lots of models with complex relations, that changes from time to time, and you don't want to change STAT relations every time, when your HAS_MANY or MANY_MANY relation is changed. When your project become stable, and DB structure is 'freezed', you can write STAT relations manually to improve perfomance for 0.5% :)

Requirements

Yii 1.1 or above. No special requirements

Usage

To use it, just extend AutoStatActiveRecord class by your model

The extension is consists of just a single file - AutoStatActiveRecord.php, which have to be placed in some "imported" directory.

Your model class:

class User extends AutoStatActiveRecord
{

   // ...... stuff

   public function relations()
   {
        return array(
            'posts' => array(self::HAS_MANY, 'Post', 'author_user_id'),
            'friends' => array(self::MANY_MANY, 'User', '{{user_user_link_table}}(user_id,friend_id)'),
        );
    }

    // ...... stuff

}

Example code with your model:

//Lets read user from DB:
$user = User::model()->findByPk(11);

//Counting related items with 'count' function (Just for example! Don't do it at home!)
$friends_bad_practice = count($user->friends);
$posts_bad_practive = count($user->posts);

//Counting related items with automatic generated relation:
$frients_good_practice = $user->friends_AUTOSTAT;
$posts_good_practice = $user->posts_AUTOSTAT;

//Counting related items with function call:
$friends_the_best_practice = $user->countRelation('friends');
$posts_the_best_practice = $user->countRelation('posts');

Resources

Project is placed on a github:

0 0
0 follower
175 downloads
Yii Version: 1.1
License: GPL-2.0
Category: Database
Developed by: MihanEntalpo
Created on: May 9, 2014
Last updated: 9 years ago

Downloads

show all

Related Extensions