本文整理汇总了PHP中Migration类的典型用法代码示例。如果您正苦于以下问题:PHP Migration类的具体用法?PHP Migration怎么用?PHP Migration使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Migration类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: up
function up()
{
echo "Starting Migration Proc ...<BR>";
//check if migration already had ran ...
$migration = DataObject::get_one("Migration", "Name='{$this->title}'");
if (!$migration) {
DB::getConn()->transactionStart();
try {
// migrate records from Live to Stage table
DB::query("DELETE FROM JobPage");
DB::query("\nINSERT INTO JobPage\n\t\t(ID,\n\t\tJobPostedDate,\n\t\tJobCompany,\n\t\tJobMoreInfoLink,\n\t\tJobLocation,\n\t\tFoundationJob,\n\t\tExpirationDate,\n\t\tActive,\n\t\tJobInstructions2Apply,\n\t\tLocationType,\n\t\tTitle,\n\t\tContent)\nSELECT \tJobPage_Live.ID,\n\t\tJobPostedDate,\n\t\tJobCompany,\n\t\tJobMoreInfoLink,\n\t\tJobLocation,\n\t\tFoundationJob,\n\t\tExpirationDate,\n\t\tActive,\n\t\tJobInstructions2Apply,\n\t\tLocationType,\n\t\tTitle,\n\t\tContent\nFROM \tJobPage_Live\nINNER JOIN Page_Live on Page_Live.Id = JobPage_Live.Id\nINNER JOIN SiteTree_Live on SiteTree_Live.Id = JobPage_Live.Id");
DB::query("DROP TABLE JobPage_Live");
DB::query("DROP TABLE JobPage_versions");
// delete orphan records
DB::query("delete from Page where Id in (select Id from SiteTree where ClassName = 'JobPage')");
DB::query("delete from SiteTree where ClassName = 'JobPage'");
DB::query("delete from Page_Live where Id in (select Id from SiteTree_Live where ClassName = 'JobPage')");
DB::query("delete from SiteTree_Live where ClassName = 'JobPage'");
DB::query("delete from Page_versions where Id in (select Id from SiteTree_versions where ClassName = 'JobPage')");
DB::query("delete from SiteTree_versions where ClassName = 'JobPage'");
DB::getConn()->transactionEnd();
} catch (Exception $e) {
DB::getConn()->transactionRollback();
return;
}
$migration = new Migration();
$migration->Name = $this->title;
$migration->Description = $this->description;
$migration->Write();
}
echo "Ending Migration Proc ...<BR>";
}
示例2: up
function up()
{
echo "Starting Proc ...<BR>";
$migration = DataObject::get_one("Migration", "Name='{$this->title}'");
if (!$migration) {
$migration = new Migration();
$migration->Name = $this->title;
$migration->Description = $this->description;
$migration->Write();
//run migration
$sql = <<<SQL
\t\tupdate DeploymentSurvey set InformationSources = REPLACE(InformationSources,'ask.openstack.org','Ask OpenStack (ask.openstack.org)')
where InformationSources like '%ask.openstack.org%';
SQL;
DB::query($sql);
$sql = <<<SQL
update Deployment set DeploymentStage = REPLACE(DeploymentStage,'Dev/QA','Under development/in testing')
where DeploymentStage like '%Dev/QA%';
SQL;
DB::query($sql);
$sql = <<<SQL
update Deployment set OtherWhyNovaNetwork = WhyNovaNetwork
where WhyNovaNetwork is not null;
SQL;
DB::query($sql);
$sql = <<<SQL
update Deployment set WhyNovaNetwork = 'Other (please specify)'
where OtherWhyNovaNetwork is not null;
SQL;
DB::query($sql);
} else {
echo "Migration Already Ran! <BR>";
}
echo "Migration Done <BR>";
}
示例3: up
function up()
{
echo "Starting Migration Proc ...<BR>";
//check if migration already had ran ...
$migration = Migration::get()->filter('Name', $this->title)->first();
if (!$migration) {
$marketplace_types = array('Private Cloud');
$factory = new MarketplaceFactory();
$service = new MarketplaceTypeManager(new SapphireMarketPlaceTypeRepository(), new SapphireSecurityGroupRepository(), SapphireTransactionManager::getInstance());
foreach ($marketplace_types as $marketplace_type) {
try {
$service->store($factory->buildMarketplaceType($marketplace_type));
} catch (Exception $ex) {
}
}
DB::query("INSERT INTO CloudServiceOffered_PricingSchemas (CloudServiceOfferedID, PricingSchemaTypeID) SELECT PublicCloudServiceOfferedID, PricingSchemaTypeID FROM PublicCloudServiceOffered_PricingSchemas;");
DB::query("UPDATE OpenStackImplementationApiCoverage SET ClassName='CloudServiceOffered'\nWHERE ImplementationID IN (SELECT ID FROM CompanyService where ClassName='PublicCloudService');");
DB::query("UPDATE DataCenterRegion SET CloudServiceID = PublicCloudID;");
DB::query("ALTER TABLE `CloudServiceOffered_PricingSchemas`\n\t\t\tADD UNIQUE INDEX `CloudServiceOffered_PricingSchemaType` (`CloudServiceOfferedID` ASC, `PricingSchemaTypeID` ASC);");
DB::query("ALTER TABLE `DataCenterRegion` DROP INDEX `Name_PublicCloud`;");
DB::query("ALTER TABLE `DataCenterRegion`\n\t\t\tADD UNIQUE INDEX `Name_CloudService` (`Name` ASC, `CloudServiceID` ASC);");
$migration = new Migration();
$migration->Name = $this->title;
$migration->Description = $this->description;
$migration->Write();
}
echo "Ending Migration Proc ...<BR>";
}
示例4: plugin_environment_install
function plugin_environment_install()
{
global $DB;
include_once GLPI_ROOT . "/plugins/environment/inc/profile.class.php";
$update = false;
if (TableExists("glpi_plugin_environment_profiles") && FieldExists("glpi_plugin_environment_profiles", "interface")) {
$update = true;
$DB->runFile(GLPI_ROOT . "/plugins/environment/sql/update-1.3.0.sql");
$DB->runFile(GLPI_ROOT . "/plugins/environment/sql/update-1.4.0.sql");
} else {
if (TableExists("glpi_plugin_environment_profiles") && FieldExists("glpi_plugin_environment_profiles", "connections")) {
$update = true;
$DB->runFile(GLPI_ROOT . "/plugins/environment/sql/update-1.4.0.sql");
}
}
if ($update) {
//Do One time on 0.78
$query_ = "SELECT *\n FROM `glpi_plugin_environment_profiles` ";
$result_ = $DB->query($query_);
if ($DB->numrows($result_) > 0) {
while ($data = $DB->fetch_array($result_)) {
$query = "UPDATE `glpi_plugin_environment_profiles`\n SET `profiles_id` = '" . $data["id"] . "'\n WHERE `id` = '" . $data["id"] . "';";
$result = $DB->query($query);
}
}
$query = "ALTER TABLE `glpi_plugin_environment_profiles`\n DROP `name` ;";
$result = $DB->query($query);
}
PluginEnvironmentProfile::initProfile();
PluginEnvironmentProfile::createFirstAccess($_SESSION['glpiactiveprofile']['id']);
$migration = new Migration("1.8.0");
$migration->dropTable('glpi_plugin_environment_profiles');
$_SESSION["glpi_plugin_environment_installed"] = 1;
return true;
}
示例5: actionCreate
public function actionCreate()
{
$model = new Migration();
$form = new Form('codegen.MigrationForm', $model);
if ($form->submitted() && $model->validate()) {
$res = Yii::app()->db->createCommand("SHOW CREATE TABLE {$model->table}")->queryRow();
$sql = $res['Create Table'];
$sql = explode("\n", $sql);
foreach ($sql as $i => $str) {
if ($i == 0) {
continue;
}
$sql[$i] = str_repeat(' ', 14) . $str;
}
$sql = implode("\n", $sql);
$dir = APP_PATH . DS . 'modules' . DS . $model->module . DS . 'migrations' . DS;
if (!is_dir($dir)) {
mkdir($dir, 0777);
chmod($dir, 0777);
}
$name = 'm' . date('ymd') . '_' . date('His') . '_' . $model->table . '_create';
$file = $dir . $name . '.php';
$params = array('name' => $name, 'table' => $model->table, 'sql' => $sql);
$code = $this->renderPartial('codegen.views.templates.migration', $params, true);
file_put_contents($file, $code);
chmod($file, 0777);
Yii::app()->user->setFlash('success', t('Создана миграция') . ' ' . $name);
}
$this->render('create', array('form' => $form));
}
示例6: up
function up()
{
echo "Starting Migration Proc ...<BR>";
//check if migration already had ran ...
$migration = Migration::get()->filter('Name', $this->title)->first();
if (!$migration) {
$SQL = <<<SQL
INSERT INTO `VideoPresentation`
(
`ClassName`,
`Created`,
`LastEdited`,
`Name`,
`DisplayOnSite`,
`Featured`,
`City`,
`Country`,
`Description`,
`YouTubeID`,
`URLSegment`,
`StartTime`,
`EndTime`,
`Location`,
`Type`,
`Day`,
`Speakers`,
`SlidesLink`,
`event_key`,
`IsKeynote`,
`PresentationCategoryPageID`,
`SummitID`,
`MemberID`)
SELECT 'VideoPresentation', NOW(),NOW(),Name, `DisplayOnSite`,
`Featured`,
`City`,
`Country`,
`Description`,
`YouTubeID`,
`URLSegment`,
`StartTime`,
`EndTime`,
`Location`,
`Type`,
`Day`,
`Speakers`,
`SlidesLink`,
`event_key`,
`IsKeynote`,
`PresentationCategoryPageID`,
`SummitID`,
`MemberID` FROM Presentation;
SQL;
DB::query($SQL);
$migration = new Migration();
$migration->Name = $this->title;
$migration->Description = $this->description;
$migration->Write();
}
echo "Ending Migration Proc ...<BR>";
}
示例7: plugin_ticketmail_install
function plugin_ticketmail_install()
{
global $DB;
$migration = new Migration(100);
//Fresh install
if (!TableExists('glpi_plugin_ticketmail_profiles')) {
$query = "CREATE TABLE `glpi_plugin_ticketmail_profiles` (\n\t\t\t\t\t`id` int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_profiles (id)',\n\t\t\t\t\t`show_ticketmail_onglet` char(1) collate utf8_unicode_ci default NULL,\n\t\t\t\t\tPRIMARY KEY (`id`)\n\t\t\t\t ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
$DB->queryOrDie($query, $DB->error());
$migration->executeMigration();
include_once GLPI_ROOT . "/plugins/ticketmail/inc/profile.class.php";
PluginTicketmailProfile::createAdminAccess($_SESSION['glpiactiveprofile']['id']);
} else {
// Since v0.84 remove "profiles_id" column and use "id"
if (FieldExists('glpi_plugin_ticketmail_profiles', 'profiles_id')) {
$drop_column_query = "ALTER TABLE glpi_plugin_ticketmail_profiles DROP COLUMN `id`;";
$rename_column_query = "ALTER TABLE glpi_plugin_ticketmail_profiles\n\t\t\t\t\t\t\t\t\tCHANGE profiles_id id int(11) NOT NULL default '0'\n\t\t\t\t\t\t\t\t\tCOMMENT 'RELATION to glpi_profiles (id)';";
$DB->queryOrDie($drop_column_query, $DB->error());
$DB->queryOrDie($rename_column_query, $DB->error());
$add_primarykey_query = "ALTER TABLE glpi_plugin_ticketmail_profiles\n\t\t\t\t\t\t\t\t\t ADD PRIMARY KEY (id);";
$drop_old_index_query = "ALTER TABLE glpi_plugin_ticketmail_profiles\n\t\t\t\t\t\t\t\t\t DROP INDEX profiles_id;";
$DB->queryOrDie($add_primarykey_query, $DB->error());
$DB->queryOrDie($drop_old_index_query, $DB->error());
}
}
return true;
}
示例8: install
/**
* Install or update dropdowns
*
* @param Migration $migration Migration instance
* @param string $version Plugin current version
*
* @return void
*/
static function install(Migration $migration, $version)
{
$migration->displayMessage(__("Updating generated dropdown files", "fields"));
// -> 0.90-1.3: generated class moved
// OLD path: GLPI_ROOT."/plugins/fields/inc/$class_filename"
// NEW path: PLUGINFIELDS_CLASS_PATH . "/$class_filename"
// OLD path: GLPI_ROOT."/plugins/fields/front/$class_filename"
// NEW path: PLUGINFIELDS_FRONT_PATH . "/$class_filename"
$obj = new PluginFieldsField();
$fields = $obj->find('type = "dropdown"');
foreach ($fields as $field) {
//First, drop old fields from plugin directories
$class_filename = $field['name'] . "dropdown.class.php";
if (file_exists(GLPI_ROOT . "/plugins/fields/inc/{$class_filename}")) {
unlink(GLPI_ROOT . "/plugins/fields/inc/{$class_filename}");
}
$front_filename = $field['name'] . "dropdown.php";
if (file_exists(GLPI_ROOT . "/plugins/fields/front/{$front_filename}")) {
unlink(GLPI_ROOT . "/plugins/fields/front/{$front_filename}");
}
$form_filename = $field['name'] . "dropdown.form.php";
if (file_exists(GLPI_ROOT . "/plugins/fields/front/{$form_filename}")) {
unlink(GLPI_ROOT . "/plugins/fields/front/{$form_filename}");
}
//Second, create new files
self::create($field);
}
return true;
}
示例9: install
static function install(Migration $migration)
{
global $DB;
// Table no longer needed in GLPI 0.85+; drop it. Needed for upgrades
$migration->dropTable(getTableForItemType(__CLASS__));
PluginSimcardProfile::createFirstAccess($_SESSION['glpiactiveprofile']['id']);
}
示例10: _execute
/**
* Migrates the database to the version specified
*
* @param array $options Configuration to use
*/
protected function _execute(array $options)
{
$groups = $options['group'];
$target = $options['to'];
$dry_run = $options['dry-run'] !== FALSE;
$quiet = $options['quiet'] !== FALSE;
$up = $options['up'] !== FALSE;
$down = $options['down'] !== FALSE;
$groups = $this->_parse_groups($groups);
if ($target === NULL) {
if ($down) {
$target = FALSE;
} else {
$target = TRUE;
}
}
$model = new Model_Migration();
$model->ensure_table_exists();
$manager = new Migration(NULL, $model);
// Sync the available migrations with those in the db
$manager->sync_migration_files()->set_dry_run($dry_run);
try {
// Run migrations for specified groups & versions
$manager->run_migration($groups, $target);
} catch (Migration_Exception $e) {
echo View::factory('minion/db/exception')->set('migration', $e->get_migration())->set('error', $e->getMessage());
throw $e;
}
$view = View::factory('minion/db/run')->set('dry_run', $dry_run)->set('quiet', $quiet)->set('dry_run_sql', $manager->get_dry_run_sql())->set('executed_migrations', $manager->get_executed_migrations())->set('group_versions', $model->get_group_statuses());
return $view;
}
示例11: up
function up()
{
echo "Starting Migration Proc ...<BR>";
//check if migration already had ran ...
$migration = Migration::get()->filter('Name', $this->title)->first();
if (!$migration) {
$requests = JobRegistrationRequest::get();
foreach ($requests as $request) {
if (!empty($request->City)) {
//create locations
$location = new JobLocation();
$location->City = $request->City;
$location->State = $request->State;
$location->Country = $request->Country;
$location->RequestID = $request->ID;
$location->Write();
$request->LocationType = 'Various';
$request->Write();
}
}
$migration = new Migration();
$migration->Name = $this->title;
$migration->Description = $this->description;
$migration->Write();
}
echo "Ending Migration Proc ...<BR>";
}
示例12: plugin_barcode_install
function plugin_barcode_install()
{
global $DB;
$migration = new Migration(PLUGIN_BARCODE_VERSION);
if (!file_exists(GLPI_PLUGIN_DOC_DIR . "/barcode")) {
mkdir(GLPI_PLUGIN_DOC_DIR . "/barcode");
}
$migration->renameTable("glpi_plugin_barcode_config", "glpi_plugin_barcode_configs");
if (!TableExists("glpi_plugin_barcode_configs")) {
$query = "CREATE TABLE `glpi_plugin_barcode_configs` (\n `id` int(11) NOT NULL auto_increment,\n `type` varchar(20) collate utf8_unicode_ci default NULL,\n PRIMARY KEY (`ID`)\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
$DB->query($query) or die("error creating glpi_plugin_barcode_configs " . $DB->error());
$query = "INSERT INTO `glpi_plugin_barcode_configs` \n (`id`, `type`)\n VALUES\n ('1', 'code128')";
$DB->query($query) or die("error populate glpi_plugin_barcode_configs " . $DB->error());
}
$migration->renameTable("glpi_plugin_barcode_config_type", "glpi_plugin_barcode_configs_types");
if (!TableExists("glpi_plugin_barcode_configs_types")) {
$query = "CREATE TABLE `glpi_plugin_barcode_configs_types` (\n `id` int(11) NOT NULL auto_increment,\n `type` varchar(20) collate utf8_unicode_ci default NULL,\n `size` varchar(20) collate utf8_unicode_ci default NULL,\n `orientation` varchar(9) collate utf8_unicode_ci default NULL,\n `marginTop` int(11) NULL,\n `marginBottom` int(11) NULL,\n `marginLeft` int(11) NULL,\n `marginRight` int(11) NULL,\n `marginHorizontal` int(11) NULL,\n `marginVertical` int(11) NULL,\n `maxCodeWidth` int(11) NULL,\n `maxCodeHeight` int(11) NULL,\n PRIMARY KEY (`ID`),\n UNIQUE (`type`)\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;";
$DB->query($query) or die("error creating glpi_plugin_barcode_configs_types " . $DB->error());
$query = "INSERT INTO `glpi_plugin_barcode_configs_types`\n (`type`, `size`, `orientation`,\n `marginTop`, `marginBottom`, `marginLeft`, `marginRight`,\n `marginHorizontal`, `marginVertical`, `maxCodeWidth`, `maxCodeHeight`)\n VALUES\n ('Code39', 'A4', 'Portrait',\n '30', '30', '30', '30',\n '25', '30', '128', '50'),\n ('code128', 'A4', 'Portrait',\n '30', '30', '30', '30',\n '25', '30', '110', '70'),\n ('ean13', 'A4', 'Portrait',\n '30', '30', '30', '30',\n '25', '30', '110', '70'),\n ('int25', 'A4', 'Portrait',\n '30', '30', '30', '30',\n '25', '30', '110', '70'),\n ('postnet', 'A4', 'Portrait',\n '30', '30', '30', '30',\n '25', '30', '110', '70'),\n ('upca', 'A4', 'Portrait',\n '30', '30', '30', '30',\n '25', '30', '110', '70'),\n ('QRcode', 'A4', 'Portrait',\n '30', '30', '30', '30',\n '25', '30', '110', '100')";
$DB->query($query) or die("error populate glpi_plugin_barcode_configs_types " . $DB->error());
}
if (countElementsInTable("glpi_plugin_barcode_configs_types", "`type`='QRcode'") == 0) {
$query = "INSERT INTO `glpi_plugin_barcode_configs_types`\n (`type`, `size`, `orientation`,\n `marginTop`, `marginBottom`, `marginLeft`, `marginRight`,\n `marginHorizontal`, `marginVertical`, `maxCodeWidth`, `maxCodeHeight`)\n VALUES\n ('QRcode', 'A4', 'Portrait',\n '30', '30', '30', '30',\n '25', '30', '110', '100')";
$DB->query($query) or die("error populate glpi_plugin_barcode_configs_types " . $DB->error());
}
include_once GLPI_ROOT . '/plugins/barcode/inc/profile.class.php';
include_once GLPI_ROOT . '/plugins/barcode/inc/config.class.php';
PluginBarcodeProfile::initProfile();
if (TableExists("glpi_plugin_barcode_profiles")) {
$query = "DROP TABLE `glpi_plugin_barcode_profiles`";
$DB->query($query) or die("error deleting glpi_plugin_barcode_profiles");
}
return true;
}
示例13: up
function up()
{
echo "Starting Migration Proc ...<BR>";
//check if migration already had ran ...
$migration = Migration::get()->filter('Name', $this->title)->first();
if (!$migration) {
$presentation_type = SummitEventType::get("SummitEventType", "Type = 'Presentation' AND SummitID = 5")->first();
if ($presentation_type) {
$presentation_type_id = $presentation_type->ID;
} else {
$presentation_type = new SummitEventType();
$presentation_type->Type = 'Presentation';
$presentation_type->SummitID = 5;
$presentation_type->Color = '#D0A9F5';
$presentation_type_id = $presentation_type->Write();
}
$SQL = <<<SQL
UPDATE SummitEvent SET TypeID = {$presentation_type_id} WHERE ClassName = 'Presentation' AND SummitID = 5;
SQL;
DB::query($SQL);
$migration = new Migration();
$migration->Name = $this->title;
$migration->Description = $this->description;
$migration->Write();
}
echo "Ending Migration Proc ...<BR>";
}
示例14: plugin_vip_install
function plugin_vip_install()
{
global $DB;
$migration = new Migration(100);
// Création de la table uniquement lors de la première installation
if (!TableExists("glpi_plugin_vip_profiles")) {
// Table des droits du profil
$query = "CREATE TABLE `glpi_plugin_vip_profiles` (\n\t `id` int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_profiles (id)',\n\t `show_vip_tab` tinyint(1) collate utf8_unicode_ci default NULL,\n\t PRIMARY KEY (`id`)\n\t ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
$DB->query($query) or die("Error creating Vip Profiles table" . $DB->error());
$migration->executeMigration();
//creation du premier accès nécessaire lors de l'installation du plugin
include_once GLPI_ROOT . "/plugins/vip/inc/profile.class.php";
PluginVipProfile::createAdminAccess($_SESSION['glpiactiveprofile']['id']);
}
if (!TableExists("glpi_plugin_vip_groups")) {
//
$query = "CREATE TABLE `glpi_plugin_vip_groups` (\n `id` int(11) NOT NULL default 0 COMMENT 'RELATION to glpi_groups(id)',\n `isvip` tinyint(1) default '0',\n PRIMARY KEY (`id`)\n ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
$DB->query($query) or die("Erreur lors de la création de la table des groupes vip " . $DB->error());
$query = "INSERT INTO `glpi_plugin_vip_groups`\n (`id`, `isvip`)\n VALUES ('0', '0')";
$DB->query($query) or die("Erreur lors de l'insertion des valeurs par défaut dans la table des groupes vip " . $DB->error());
}
if (!TableExists("glpi_plugin_vip_tickets")) {
$query = "CREATE TABLE glpi_plugin_vip_tickets (\n\t\t\t\t id int(11) NOT NULL default '0' COMMENT 'RELATION to glpi_tickets (id)',\n\t\t\t\t isvip tinyint(1) default '0',\n\t\t\t\t PRIMARY KEY (`id`)\n\t\t\t\t) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci";
$DB->query($query) or die("Error creating Vip Tickets table");
}
$query = "INSERT INTO glpi_plugin_vip_tickets\n\t\t\t\t SELECT id, '0'\n\t\t\t\t\t FROM glpi_tickets\n\t\t ON DUPLICATE KEY\n\t\t\t\t UPDATE isvip = '0'";
$DB->query($query) or die("Error inserting ticket in Vip Tickets table");
$migration->executeMigration();
return true;
}
示例15: createFromTable
function createFromTable($tablename, $include_data = false, $where)
{
//check the table exists
$db = $this->db;
$query = 'SELECT relname FROM pg_class WHERE relname=' . $db->qstr($tablename);
$result = $db->GetOne($query);
if ($result === false) {
throw new Exception('Cannot Create migration from table ' . $tablename . ' as it doesn\'t exist');
}
$migration = new Migration();
$table = $migration->add(new CreateTableComponent());
$table->name = $tablename;
$references = $this->GetForeignKeys($tablename);
$columns = $db->MetaColumns($tablename);
foreach ($columns as $column_data) {
$column_data->references = $references[$column_data->name];
$column = new AddColumnComponent($column_data);
$table->addColumn($column);
}
$pks = $db->MetaPrimaryKeys($tablename);
$table->setPrimaryKeys($pks);
if ($include_data) {
$query = 'SELECT * FROM ' . $tablename . ($where != '' ? ' WHERE ' . $where : '');
$insert_data = $migration->add(new InsertDataComponent($tablename));
$insert_data->setDB($db);
$result = $db->Execute($query) or die($db->ErrorMsg() . $query);
foreach ($result as $key => $row) {
$insert_data->addRow($row);
}
}
return $migration->toArray();
}