Migrazioni con Laravel: Guida Completa (2023)

Le migrazioni in Laravel sono un elemento cruciale nella gestione della struttura del database, fornendo una sorta di controllo di versione che facilita la modifica e la condivisione dello schema del database dell'applicazione. In questa guida, esploreremo dettagliatamente il processo di generazione, esecuzione e rollback delle migrazioni, utilizzando il potente Schema Builder di Laravel.

Generazione di Migrazioni

Per creare una migrazione, si utilizza il comando Artisan make:migration. Ad esempio, per creare una tabella degli utenti, esegui il seguente comando:

php artisan make:migration create_users_table

Questo genererà un file di migrazione nel percorso database/migrations, con un timestamp nel nome per determinare l'ordine delle migrazioni.

Struttura delle Migrazioni

Una classe di migrazione contiene due metodi principali: up e down. Il metodo up viene utilizzato per aggiungere nuove tabelle, colonne o indici al database, mentre il metodo down dovrebbe annullare le operazioni eseguite da up.

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateFlightsTable extends Migration {
    public function up() {
        Schema::create('flights', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('airline');
            $table->timestamps();
        });
    }

    public function down() {
        Schema::drop('flights');
    }
}

Esecuzione delle Migrazioni

Per eseguire tutte le migrazioni in sospeso, usa il comando Artisan migrate:

php artisan migrate

È possibile forzare l'esecuzione in produzione utilizzando l'opzione --force.

Rollback delle Migrazioni

Per eseguire il rollback dell'ultima migrazione, usa il comando migrate:rollback. Per eseguire il rollback di un numero specifico di migrazioni, utilizza l'opzione --step.

php artisan migrate:rollback --step=5

Creazione di Tabelle

Per creare una nuova tabella, utilizza il metodo create sulla facciata Schema. Puoi definire le colonne utilizzando i vari metodi disponibili nel costruttore Blueprint.

Schema::create('users', function (Blueprint $table) {
    $table->increments('id');
});

Creazione di Colonne

Il metodo table sulla facciata Schema può essere utilizzato per aggiornare tabelle esistenti aggiungendo colonne. Utilizza i metodi di colonna disponibili per definire le colonne.

Schema::table('users', function (Blueprint $table) {
    $table->string('email');
});

Tipi di Colonne Disponibili

Laravel supporta una varietà di tipi di colonne, come stringhe, interi, booleani, date, ecc. Ad esempio:

$table->string('name');
$table->integer('votes');
$table->boolean('confirmed');
$table->date('created_at');
// ... e molti altri

Modificatori di Colonne

Oltre ai tipi di colonne, ci sono vari "modificatori" che è possibile utilizzare durante l'aggiunta di una colonna. Ad esempio, per rendere la colonna "nullable", usa il metodo nullable.

Schema::table('users', function (Blueprint $table) {
    $table->string('email')->nullable();
});

Modifica delle Colonne

Il metodo change consente di modificare alcuni tipi di colonne esistenti. Ad esempio, per aumentare la dimensione di una colonna stringa:

Schema::table('users', function (Blueprint $table) {
    $table->string('name', 50)->change();
});

Rinomina delle Colonne

Per rinominare una colonna, utilizza il metodo renameColumn:

Schema::table('users', function (Blueprint $table) {
    $table->renameColumn('old_name', 'new_name');
});

Rimozione di Colonne

Per rimuovere una colonna, utilizza il metodo dropColumn:

Schema::table('users', function (Blueprint $table) {
    $table->dropColumn('votes');
});

Creazione di Indici

Laravel supporta diversi tipi di indici, come indici univoci e indici composti. Puoi definire un indice durante la creazione della colonna o successivamente utilizzando i metodi unique e index.

$table->string('email')->unique();
$table->index(['account_id', 'created_at']);

Vincoli di Chiave Esterna

Laravel supporta i vincoli di chiave esterna per garantire l'integrità referenziale del database. Ad esempio:

$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');

Questa guida copre in dettaglio il processo di migrazione con Laravel, dall'inizio alla fine. Utilizzando saggiamente le migrazioni e il potente Schema Builder, puoi mantenere facilmente la struttura del database della tua applicazione. Segui attentamente ogni passaggio per assicurarti un ambiente database coerente e ben strutturato.

References

Top Articles
Latest Posts
Article information

Author: Van Hayes

Last Updated: 26/12/2023

Views: 6177

Rating: 4.6 / 5 (66 voted)

Reviews: 89% of readers found this page helpful

Author information

Name: Van Hayes

Birthday: 1994-06-07

Address: 2004 Kling Rapid, New Destiny, MT 64658-2367

Phone: +512425013758

Job: National Farming Director

Hobby: Reading, Polo, Genealogy, amateur radio, Scouting, Stand-up comedy, Cryptography

Introduction: My name is Van Hayes, I am a thankful, friendly, smiling, calm, powerful, fine, enthusiastic person who loves writing and wants to share my knowledge and understanding with you.