Я хочу начать использовать DBForge и класс миграции, встроенный в CI, но я не уверен, как создать миграцию для всех моих таблиц.
Я думаю, что в процессе установки у меня есть файл миграции для каждой из следующих таблиц: advertisements, announcements, config, users, points
.. Когда пользователь устанавливает приложение, оно автоматически запускает эти файлы миграции и создает таблицы.
IE: 001_advertisements, 001_announcements, 001_config, 001_users, 001_points
001_map_advertisements
class Migration_map_advertisements extends CI_Migration {
public function up(){
$this->dbforge->add_field(array(
'id' => array(
'type' => 'INT',
'constraint' => 11,
'unsigned' => TRUE,
'auto_increment' => TRUE
),
'youtube_id' => array(
'type' => 'VARCHAR',
'constraint' => '255',
),
'status' => array(
'type' => 'int',
'constraint' => 11,
'null' => FALSE,
'default' => 1
),
'timestamp' => array(
'type' => 'int',
'constraint' => 11
),
'type' => array(
'type' => 'VARCHAR',
'default' => 'video'
),
'filename' => array(
'type' => 'VARCHAR',
'constraint' => '255'
),
'url' => array(
'type' => 'varchar',
'constraint' => '255'
),
'description' => array(
'type' => 'varchar',
'constraint' => 64
),
'title' => array(
'type' => 'varchar',
'constraint' => 64
)
));
$this->dbforge->create_table('map_advertisements', TRUE);
}
public function down()
{
$this->dbforge->drop_table('map_advertisements');
}
Однако, если я сделаю это и попытаюсь запустить защищенный контроллер:
class Developer extends ADMIN_Controller {
function __construct(){
parent::__construct();
} #end constructor function
public function migrate($index){
$this->load->library('migration');
if ( !$this->migration->version($index) ){
show_error($this->migration->error_string());
}else{
echo 'migrated';
}
}
}
Я получаю сообщение о том, что существует несколько version 1
миграций, и он не проходит процесс миграции. Есть ли другой способ сделать это в CI?