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.