Я пишу CDbMigration в Yii, чтобы создать новую таблицу с внешним ключом для существующей таблицы. Это просто. Я также хочу взять каждую запись в старой таблице и скопировать ее идентификатор, миниатюру и myfunction (title) в новую таблицу, прежде чем отбрасывать миниатюру в старой таблице.
old_table перед миграцией должен выглядеть (усечено)
CREATE TABLE IF NOT EXISTS `old_table` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`thumbnail` varchar(64) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
И после этого у меня будет new_table и старая таблица без thumbnail
CREATE TABLE IF NOT EXISTS `new_table` (
`old_id` int(11) unsigned NOT NULL, -- foreign key to old_table
`transformed_title` varchar(255) NOT NULL,
`thumbnail` varchar(64) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Кроме того, myfunction - это функция для преобразования строки.
Теперь я понял, что использование CActiveRecord - это плохая практика в процессе миграции, но мои навыки работы с SQL недостаточно остры, чтобы знать, есть ли команда SQL, которая делает то, что я хочу для миграции. Или это то, в чем я должен отдельно копировать данные в сценарии (т. Е. Не то, для чего я должен использовать миграцию)?