CodeIgniter 4: migrazioni e seeder per gestire il database
Crea ed esegui migrazioni e seeder in CodeIgniter 4 con comandi Spark corretti, esempi PHP validi e precauzioni per i dati.
Crea ed esegui migrazioni e seeder in CodeIgniter 4 con comandi Spark corretti, esempi PHP validi e precauzioni per i dati.
Schema versionato
Le migrazioni descrivono modifiche incrementali allo schema. I file in app/Database/Migrations hanno un prefisso temporale e una classe univoca: up() applica la modifica, down() la annulla. La tabella migrations registra ciò che è già stato eseguito. Controlla la connessione e fai una copia dei dati prima di intervenire su un database esistente.
Generare una migrazione
Esegui php spark make:migration CreateNewsTable dalla directory del progetto. Il comando genera uno scheletro: completa up() e down() come nell’esempio seguente. Il metodo forge crea la tabella news con una chiave primaria e tre campi; in down() la tabella viene rimossa, quindi anche i suoi dati.
<?php
// app/Database/Migrations/YYYY-MM-DD-HHMMSS_CreateNewsTable.php
namespace App\Database\Migrations;
use CodeIgniter\Database\Migration;
class CreateNewsTable extends Migration
{
public function up()
{
$this->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'],
]);
$this->forge->addKey('id', true);
$this->forge->createTable('news');
}
public function down()
{
$this->forge->dropTable('news');
}
}
Eseguire e controllare
php spark migrate applica le migrazioni mancanti nel namespace App. php spark migrate:status mostra lo stato. Per includere tutti i namespace previsti usa php spark migrate --all. Controlla il gruppo di database e il namespace scelto prima di lanciare i comandi. Non usare un inesistente migrate:latest come passaggio necessario.
Rollback e refresh
php spark migrate:rollback riporta le migrazioni allo stato iniziale; l’opzione -b seleziona un batch. php spark migrate:refresh esegue il rollback e poi tutte le migrazioni. Sono operazioni potenzialmente distruttive per i dati: usale solo su un database di prova o dopo una verifica con backup e piano di ripristino. Non sono un modo innocuo di aggiornare la produzione.
Seeder di esempio
Un seeder estende CodeIgniter\Database\Seeder e implementa run(). Genera la classe con php spark make:seeder NewsSeeder, poi inserisci dati fittizi come nell’esempio. php spark db:seed NewsSeeder lo esegue. Senza nome del seeder non dare per scontato che il comando esegua automaticamente tutti i file. L’esecuzione ripetuta dell’esempio inserirà duplicati se non introduci una regola di unicità o un controllo.
<?php
// app/Database/Seeds/NewsSeeder.php
namespace App\Database\Seeds;
use CodeIgniter\Database\Seeder;
class NewsSeeder extends Seeder
{
public function run()
{
$this->db->table('news')->insertBatch([
['title' => 'Sample one', 'slug' => 'sample-one', 'text' => 'Demo text'],
['title' => 'Sample two', 'slug' => 'sample-two', 'text' => 'Demo text'],
]);
}
}
Lavoro in team
Versiona migrazioni e seeder nel repository; crea una nuova migrazione anziché modificare una già applicata su altri ambienti. I dati statici di riferimento richiedono una strategia per aggiornamenti e ripetibilità; non mettere dati personali nei seeder. Prova applicazione e rollback su staging, verifica compatibilità delle query e applica in produzione solo le migrazioni pianificate.
Fonti
Documentazione CodeIgniter: https://codeigniter4.github.io/CodeIgniter4/dbmgmt/migration.html ; seeder: https://codeigniter4.github.io/CodeIgniter4/dbmgmt/seeds.html .
Share
What's Your Reaction?
Like
0
Cancella like
0
Amore
0
Buffo
0
arrabbiato
0
Sad
0
Wow
0