Решил вот поделиться свой нароботочкой: Как использовать: создаете класс своей модели и наследуете от MysqlTemporaryActiveRecord класса.
Переопределяете абстрактный метод getTableColumns(), который должен возвращать структуру таблицы (формат такой же, как и в CDbSchema::createTable()):
Код: Выделить всё
Yii::import('path.to.MysqlTemporaryActiveRecord');
class Contact extends MysqlTemporaryActiveRecord {
// ...
public function getTableColumns()
{
return array(
'id' => 'pk',
'name' => 'string NOT NULL',
'email' => 'string',
);
}
// ...
}
Есть и еще плюшки:
1. Можно переопределить метод getTableOptions() для переопределения параметров таблицы (charset, engine).
2. Можно переопределить метод afterCreatingTable() для добавления своей логики после создания таблицы, например, создания ключей и индексов.
Например:
Код: Выделить всё
// ...
public function getTableOptions()
{
return 'ENGINE InnoDB DEFAULT CHARACTER SET utf8';
}
// ...
protected function afterCreatingTable()
{
$this->dbConnection->createCommand()->createIndex('idx_contact_name', $this->tableName(), 'name', true);
}
// ...