CActiveRecordMetaData

优质
小牛编辑
136浏览
2023-12-01
所有包 | 属性 | 方法
system.db.ar
继承class CActiveRecordMetaData
源自1.0
版本$Id: CActiveRecord.php 3533 2012-01-08 22:07:55Z mdomba $
源码framework/db/ar/CActiveRecord.php
CActiveRecordMetaData表示一个活动记录类的源数据。

公共属性

隐藏继承属性

属性类型描述定义在
attributeDefaultsarray属性默认值CActiveRecordMetaData
columnsarray表的列CActiveRecordMetaData
relationsarray关系列表CActiveRecordMetaData
tableSchemaCDbTableSchema表结构信息CActiveRecordMetaData

公共方法

隐藏继承方法

方法描述定义在
__construct()构造函数。CActiveRecordMetaData
addRelation()增加一个关系。CActiveRecordMetaData
hasRelation()检查是否有一个带有指定名称定义的关系。CActiveRecordMetaData
removeRelation()删除一个带有指定名称的关系。CActiveRecordMetaData

属性详细

attributeDefaults 属性 public array $attributeDefaults;

属性默认值

columns 属性 public array $columns;

表的列

relations 属性 public array $relations;

关系列表

tableSchema 属性 public CDbTableSchema $tableSchema;

表结构信息

方法详细

__construct() 方法
public void __construct(CActiveRecord $model)
$modelCActiveRecord模型实例
源码: framework/db/ar/CActiveRecord.php#2258 (显示) publicfunction__construct($model)
{
$this->_model=$model;

$tableName=$model->tableName();
if(($table=$model->getDbConnection()->getSchema()->getTable($tableName))===null)
thrownewCDbException(Yii::t('yii','Thetable"{table}"foractiverecordclass"{class}"cannotbefoundinthedatabase.',
array('{class}'=>get_class($model),'{table}'=>$tableName)));
if($table->primaryKey===null)
{
$table->primaryKey=$model->primaryKey();
if(is_string($table->primaryKey)&&isset($table->columns[$table->primaryKey]))
$table->columns[$table->primaryKey]->isPrimaryKey=true;
elseif(is_array($table->primaryKey))
{
foreach($table->primaryKeyas$name)
{
if(isset($table->columns[$name]))
$table->columns[$name]->isPrimaryKey=true;
}
}
}
$this->tableSchema=$table;
$this->columns=$table->columns;

foreach($table->columnsas$name=>$column)
{
if(!$column->isPrimaryKey&&$column->defaultValue!==null)
$this->attributeDefaults[$name]=$column->defaultValue;
}

foreach($model->relations()as$name=>$config)
{
$this->addRelation($name,$config);
}
}

构造函数。

addRelation() 方法 (可用自 v1.1.2)
public void addRelation(string $name, array $config)
$namestring$name 关系名称。
$configarray$config 相关参数。
{return}void
源码: framework/db/ar/CActiveRecord.php#2307 (显示) publicfunctionaddRelation($name,$config)
{
if(isset($config[0],$config[1],$config[2]))//relationclass,ARclass,FK
$this->relations[$name]=new$config[0]($name,$config[1],$config[2],array_slice($config,3));
else
thrownewCDbException(Yii::t('yii','Activerecord"{class}"hasaninvalidconfigurationforrelation"{relation}".Itmustspecifytherelationtype,therelatedactiverecordclassandtheforeignkey.',array('{class}'=>get_class($this->_model),'{relation}'=>$name)));
}

增加一个关系。

$config 是一个带有三个元素的数组: 关系类型,相关的活动记录类和外键。

hasRelation() 方法 (可用自 v1.1.2)
public boolean hasRelation(string $name)
$namestring$name 关系的名称。
{return}boolean
源码: framework/db/ar/CActiveRecord.php#2322 (显示) publicfunctionhasRelation($name)
{
returnisset($this->relations[$name]);
}

检查是否有一个带有指定名称定义的关系。

removeRelation() 方法 (可用自 v1.1.2)
public void removeRelation(string $name)
$namestring$name
{return}void
源码: framework/db/ar/CActiveRecord.php#2334 (显示) publicfunctionremoveRelation($name)
{
unset($this->relations[$name]);
}

删除一个带有指定名称的关系。