Я пишу CDbMigration в Yii, чтобы создать новую таблицу с внешним ключом в существующую таблицу. Это просто. Я также хочу взять каждую запись в старой таблице и скопировать ее идентификатор, миниатюру и мою функцию (заголовок) в новую таблицу, прежде чем отбрасывать миниатюру в старой таблице.Yii DbMigration Перемещение данных в другую таблицу
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;
Кроме того, myfunctionis функции преобразования строка.
Теперь я понял, что использование CActiveRecord - это плохая практика миграции, но мои SQL-навыки недостаточно остры, чтобы знать, есть ли команда SQL для выполнения того, что я хочу для миграции. Или это то, в чем я должен отдельно копировать данные в сценарии (т. Е. Не для чего я должен использовать миграцию)?
Yeah 'myfunction' не является MySQL, поэтому я думаю, что это не сработает, я решил вместо этого написать код, который будет выбирать данные, преобразовывать их в PHP и затем вставлять. Все используют построитель запросов Yii. – Matt