CActiveRecordMetaData
| Пакет | system.db.ar |
|---|---|
| Наследование | класс CActiveRecordMetaData |
| С момента | 1.0 |
| Исходный код | framework/db/ar/CActiveRecord.php |
CActiveRecordMetaData представляет метаданные для класса Active Record.
Общественные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| attributeDefaults | массив | Значения по умолчанию атрибутов | CActiveRecordMetaData |
| columns | массив | Столбцы таблицы | CActiveRecordMetaData |
| relations | массив | Список отношений | CActiveRecordMetaData |
| tableSchema | CDbTableSchema | Информация о схеме таблицы | 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) | ||
| $model | CActiveRecord | экземпляр модели |
Исходный код: framework/db/ar/CActiveRecord.php#2384 (показать)
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);
}
}
Конструктор.
addRelation() метод (доступен с версии 1.1.2)
public void addRelation(string $name, array $config) | ||
| $name | строка | $name Имя отношения. |
| $config | массив | $config Параметры отношения. |
| {return} | void | |
Исходный код: framework/db/ar/CActiveRecord.php#2434 (показать)
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)));
}
Добавляет отношение.
$config — массив с тремя элементами: тип отношения, связанный класс Active Record и внешний ключ.
hasRelation() метод (доступен с версии 1.1.2)
public boolean hasRelation(string $name) | ||
| $name | строка | $name Имя отношения. |
| {return} | булево | |
Исходный код: framework/db/ar/CActiveRecord.php#2449 (показать)
public function hasRelation($name)
{
return isset($this->relations[$name]);
}
Проверяет, существует ли отношение с указанным именем.
removeRelation() метод (доступен с версии 1.1.2)
public void removeRelation(string $name) | ||
| $name | строка | $name |
| {return} | void | |
Исходный код: framework/db/ar/CActiveRecord.php#2461 (показать)
public function removeRelation($name)
{
unset($this->relations[$name]);
}
Удаляет отношение с указанным именем.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CActiveRecordMetaData