CodeIgniter 4: migrazioni e seeder – gestire il database come un pro
Guida pratica a migrazioni e seeder in CodeIgniter 4: creare tabelle, versionare lo schema e popolare il database con dati di esempio.
Le migrazioni e i seeder sono strumenti essenziali per gestire il database in modo professionale con CodeIgniter 4. Le migrazioni permettono di versionare lo schema del database, mentre i seeder popolano le tabelle con dati di esempio o di riferimento.
In questa guida vedremo come creare ed eseguire migrazioni, come generare seeder e come gestire il ciclo di vita del database in diversi ambienti.
Cosa sono le migrazioni
Le migrazioni sono file PHP che descrivono le modifiche allo schema del database in modo incrementale e versionato. In CodeIgniter 4 risiedono nella cartella app/Database/Migrations.
Ogni migrazione contiene due metodi: up() per applicare la modifica e down() per annullarla.
Creare una migrazione
Per generare una nuova migrazione, usa il comando spark:
php spark make:migration CreateNewsTable
Il comando crea un file con timestamp nella cartella app/Database/Migrations. La struttura base è:
forge->addField([
'id' => [
'type' => 'INT',
'constraint' => 11,
'unsigned' => true,
'auto_increment' => true,
],
'title' => [
'type' => 'VARCHAR',
'constraint' => 255,
],
'slug' => [
'type' => 'VARCHAR',
'constraint' => 255,
],
'text' => [
'type' => 'TEXT',
],
'created_at' => [
'type' => 'DATETIME',
'null' => true,
],
]);
$this->forge->addKey('id', true);
$this->forge->createTable('news');
}
public function down()
{
$this->forge->dropTable('news');
}
}
Eseguire le migrazioni
Per applicare tutte le migrazioni in sospeso:
php spark migrate
Per tornare all'ultima versione disponibile:
php spark migrate:latest
Per annullare tutte le migrazioni:
php spark migrate:rollback
Per rieseguire tutte le migrazioni da zero (utile in sviluppo):
php spark migrate:refresh
Il comando migrate:refresh esegue il rollback di tutte le migrazioni e le riesegue, riportando il database allo stato pulito.
Cosa sono i seeder
I seeder sono classi che popolano le tabelle con dati di esempio o di riferimento. Risiedono nella cartella app/Database/Seeds.
Creare un seeder
php spark make:seed NewsSeeder
Il file generato avrà questa struttura:
'Prima notizia',
'slug' => 'prima-notizia',
'text' => 'Contenuto della prima notizia...',
],
[
'title' => 'Seconda notizia',
'slug' => 'seconda-notizia',
'text' => 'Contenuto della seconda notizia...',
],
];
$this->db->table('news')->insertBatch($data);
}
}
Eseguire i seeder
php spark db:seed NewsSeeder
Per eseguire tutti i seeder registrati:
php spark db:seed
Strumenti utili: DB-Craft
Se hai un database esistente e vuoi generare automaticamente migrazioni e seeder, puoi usare il pacchetto DB-Craft:
composer require robinncode/db_craft
I comandi principali sono:
php spark get:migration table_name
php spark get:seed table_name
DB-Craft genera file di migrazione e seeder partendo dallo schema e dai dati del database connesso, risparmiando molto tempo in fase di migrazione da progetti esistenti.
Migrazioni in team: buone pratiche
- Ogni migrazione deve fare una sola cosa e avere un nome descrittivo.
- Non modificare mai una migrazione già applicata in produzione: creane una nuova.
- Usa
migrate:refreshsolo in sviluppo, mai in produzione. - Versiona i file di migrazione e seeder nel repository Git.
- In produzione esegui solo
php spark migrate, mairefreshorollbacksenza backup.
Raccomandazioni
- Definisci sempre il metodo
down()per poter annullare la migrazione. - Usa nomi descrittivi per le migrazioni (es.
CreateNewsTable,AddStatusToNews). - Non inserire dati reali nei seeder: usa dati fittizi o di riferimento.
- Testa sempre le migrazioni su un database di staging prima della produzione.
Fonti ufficiali
Share
What's Your Reaction?
Like
0
Cancella like
0
Amore
0
Buffo
0
arrabbiato
0
Sad
0
Wow
0