Skip to content

daotu/yii2-eav

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

#Yii2 EAV behavior

Easy way to store extended attribtes of model.

##Usage

class MyModel extends ActiveRecord {
    public function behaviors() {
        return [
            'properties' => [
                'class' => EavBehavior::className(),
                'primaryKey' => 'id', // id related to model
                'tableName' => 'my_model_properties', // table name for store attributes
            ],
        ];
    }

    public function init() {
        parent::init();
        print_r($this->properties); // show properties as array

        $this->properties = [
            'foo' => 'foo',
            'bar' => [1, 2, 3],
            'test' => [
                'foo' => 'bar',
            ]
        ];
    }
}

EAV table schema should contain fields:

  • model_id;
  • name;
  • value;

For example (MySQL):

CREATE TABLE `my_model_properties` (
  `model_id` int(10) unsigned NOT NULL,
  `name` varchar(255) NOT NULL,
  `value` varchar(255) DEFAULT NULL,
  UNIQUE KEY `u_model_name` (`name`,`model_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 100.0%