eav-behavior

Implements entity-attribute-value pattern.

  • Owner: yiiext/eav-behavior
  • Platform:
  • License::
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

EAV behavior

Allows model to work with custom fields on the fly (EAV pattern).

Installing and configuring

Create a table that will store EAV-attributes

SQL dump:

[sql]
CREATE TABLE IF NOT EXISTS `eavAttr` (
  `entity` bigint(20) unsigned NOT NULL,
  `attribute` varchar(250) NOT NULL,
  `value` text NOT NULL,
  KEY `ikEntity` (`entity`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

Attach behaviour to your model

[php]
function behaviors() {
    return array(
        'eavAttr' => array(
            'class' => 'ext.yiiext.behaviors.model.eav.EEavBehavior',
            // Table that stores attributes (required)
            'tableName' => 'eavAttr',
            // model id column
            // Default is 'entity'
            'entityField' => 'entity',
            // attribute name column
            // Default is 'attribute'
            'attributeField' => 'attribute',
            // attribute value column
            // Default is 'value'
            'valueField' => 'value',
            // Model FK name
            // By default taken from primaryKey
            'modelTableFk' => primaryKey,
            // Array of allowed attributes
            // All attributes are allowed if not specified
            // Empty by default
            'safeAttributes' => array(),
            // Attribute prefix. Useful when storing attributes for multiple models in a single table
            // Empty by default
            'attributesPrefix' => '',
        )
    );
}

Methods

getEavAttributes($attributes)

Get attribute values indexed by attributes name.

[php]
$user = User::model()->findByPk(1);
$user->getEavAttributes(array('attribute1', 'attribute2'));

getEavAttribute($attribute)

Get attribute value.

[php]
$user = User::model()->findByPk(1);
$user->getEavAttribute('attribute1');

setEavAttribute($attribute, $value, $save = FALSE)

Set attribute value.

[php]
$user = User::model()->findByPk(1);
$user->setEavAttribute('attribute1', 'value1');

setEavAttributes($attributes, $save = FALSE)

Set attributes values.

[php]
$user = User::model()->findByPk(1);
$user->setEavAttributes(array('attribute1' => 'value1', 'attribute2' => 'value2'));

withEavAttributes($attributes)

Limits AR query to records with specified attributes.

[php]
$users = User::model()->withEavAttributes(array('skype'))->findAll();
$usersCount = User::model()->withEavAttributes(array('skype'))->count();

Main metrics

Overview
Name With Owneryiiext/eav-behavior
Primary LanguagePHP
Program languagePHP (Language Count: 1)
Platform
License:
所有者活动
Created At2011-08-18 23:03:15
Pushed At2015-10-14 12:28:34
Last Commit At2015-02-27 00:14:25
Release Count1
Last Release Namev0.5 (Posted on 2011-11-05 04:46:09)
First Release Namev0.5 (Posted on 2011-11-05 04:46:09)
用户参与
Stargazers Count25
Watchers Count13
Fork Count15
Commits Count7
Has Issues Enabled
Issues Count10
Issue Open Count7
Pull Requests Count1
Pull Requests Open Count0
Pull Requests Close Count1
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private