| Package | system.db.ar | 
|---|---|
| Inheritance | class CActiveRecordMetaData | 
| Since | 1.0 | 
| Source Code | framework/db/ar/CActiveRecord.php | 
| Property | Type | Description | Defined By | 
|---|---|---|---|
| attributeDefaults | array | attribute default values | CActiveRecordMetaData | 
| columns | array | table columns | CActiveRecordMetaData | 
| relations | array | list of relations | CActiveRecordMetaData | 
| tableSchema | CDbTableSchema | the table schema information | CActiveRecordMetaData | 
| Method | Description | Defined By | 
|---|---|---|
| __construct() | Constructor. | CActiveRecordMetaData | 
| addRelation() | Adds a relation. | CActiveRecordMetaData | 
| hasRelation() | Checks if there is a relation with specified name defined. | CActiveRecordMetaData | 
| removeRelation() | Deletes a relation with specified name. | CActiveRecordMetaData | 
attribute default values
table columns
list of relations
the table schema information
|    public void __construct(CActiveRecord $model)   | ||
| $model | CActiveRecord | the model instance | 
 public function __construct($model)
{
    $this->_modelClassName=get_class($model);
    $tableName=$model->tableName();
    if(($table=$model->getDbConnection()->getSchema()->getTable($tableName))===null)
        throw new CDbException(Yii::t('yii','The table "{table}" for active record class "{class}" cannot be found in the database.',
            array('{class}'=>$this->_modelClassName,'{table}'=>$tableName)));
            
    if(($modelPk=$model->primaryKey())!==null || $table->primaryKey===null)
    {
        $table->primaryKey=$modelPk;
        if(is_string($table->primaryKey) && isset($table->columns[$table->primaryKey]))
            $table->columns[$table->primaryKey]->isPrimaryKey=true;
        elseif(is_array($table->primaryKey))
        {
            foreach($table->primaryKey as $name)
            {
                if(isset($table->columns[$name]))
                    $table->columns[$name]->isPrimaryKey=true;
            }
        }
    }
    $this->tableSchema=$table;
    $this->columns=$table->columns;
    foreach($table->columns as $name=>$column)
    {
        if(!$column->isPrimaryKey && $column->defaultValue!==null)
            $this->attributeDefaults[$name]=$column->defaultValue;
    }
    foreach($model->relations() as $name=>$config)
    {
        $this->addRelation($name,$config);
    }
}  Constructor.
|    public void addRelation(string $name, array $config)   | ||
| $name | string | $name Name of the relation. | 
| $config | array | $config Relation parameters. | 
| {return} | void | |
 public function addRelation($name,$config)
{
    if(isset($config[0],$config[1],$config[2]))  // relation class, AR class, FK
        $this->relations[$name]=new $config[0]($name,$config[1],$config[2],array_slice($config,3));
    else
        throw new CDbException(Yii::t('yii','Active record "{class}" has an invalid configuration for relation "{relation}". It must specify the relation type, the related active record class and the foreign key.', array('{class}'=>$this->_modelClassName,'{relation}'=>$name)));
}  Adds a relation. 
 $config is an array with three elements: relation type, the related active record class and the foreign key.
|    public boolean hasRelation(string $name)   | ||
| $name | string | $name Name of the relation. | 
| {return} | boolean | |
 public function hasRelation($name)
{
    return isset($this->relations[$name]);
}  Checks if there is a relation with specified name defined.
|    public void removeRelation(string $name)   | ||
| $name | string | $name | 
| {return} | void | |
 public function removeRelation($name)
{
    unset($this->relations[$name]);
}  Deletes a relation with specified name.
Signup or Login in order to comment.