Al volte ci si trova a dover ridisegnare una tabella database (ad esempio per dover modificare il tipo dei campi o la dimensione, o aggiungere / togliere campi) in fase di progetto, o ancora più spesso in fase di prototipazione.
E spesso non è nemmeno richiesto di conservare una storia di queste modifiche perché semplicemente si sta modellando una versione finale non ancora soddisfacente.
Quindi invece di procedere con modifiche puntuali sul campo, ad esempio con un equivalente di
ALTER TABLE RENAME COLUMN myField AS Field1;
è più immediato fare un drop e ricreare la tabella, eventualmente salvando i dati o preparando uno script di alimentazione da lanciare all’occorrenza.
Sebbene si possano effettuare entrambe le operazioni (più soft con l’alter table o più drastica con il drop/create) vediamo come si fa a “droppare” e ricreare la tabella con i comandi di migrazione di Laravel.
Lo script di creazione tabella contiene già per default i due metodi per costruire e distruggere la tabella, rispettivamente up() e donw():
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateDatiRegioniTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('dati_regioni', function (Blueprint $table) { $table->bigIncrements('id'); ... }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('dati_regioni'); } }
Il metodo up()
viene invocato quando si esegue la migrazione:
$ php artisan migrate
ed il file ad essere eseguito è l’ultimo (il più recente) che si trova nella directory database/migrations. Per droppare la tabella si esegue:
$ php artisan migrate:rollback
e successivamente, per ricrearla:
$ php artisan migrate
Per eseguire operazioni su una determinata tabella, individuare il file contente le migrazioni per quella tabella e modificarne il nome in modo tale che la stringa sia in senso lessicografico la più grande di tutte
2020_04_17_154056_create_regioni_table.php 2020_04_17_155500_create_dati_regioni_table.php
Commenti recenti