Ich möchte anfangen, DBForge und Migrationsklasse zu verwenden, die in CI eingebaut ist, aber ich bin nicht sicher, wie ich Migrationen für alle meine Tabellen erstellen kann.
Meine Überlegungen gehen dahin, in meinem Installationsprozess eine Migrationsdatei für jede der folgenden Tabellen zu haben: advertisements, announcements, config, users, points
.. Wenn der Benutzer die App installiert, wird sie automatisch durch diese Migrationsdateien laufen und die Tabellen erstellen.
IE: 001_advertisements, 001_announcements, 001_config, 001_users, 001_points
001_Karte_Werbung
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');
}
Wenn ich dies jedoch tue und versuche, einen gesicherten Controller zu betreiben:
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';
}
}
}
Ich erhalte eine Fehlermeldung, die besagt, dass es mehrere version 1
Migrationen und schlägt den Migrationsprozess fehl. Gibt es eine andere Möglichkeit, dies in CI zu tun?