Creare ed eliminare una singola tabella database con Laravel

Spread the love

In fase di progetto, o ancora più spesso in fase di prototipazione, ci si trova a dover ridisegnare una tabella (ad esempio per dover modificare il tipo dei campi o la dimensione, o aggiungere / togliere campi).

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

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.