Skip to main content

Cosa sono le migration

Le migration sono una sorta di controllo di versione del database. Consentono al team di condividere e gestire le definizioni dello schema del database dell’applicazione. Avrai vissuto situazioni in cui, dopo aver fatto pull del codice, dovevi comunicare al team “aggiungete manualmente questa colonna al vostro database locale”. Le migration risolvono questo problema. I file di migration sono conservati nella directory database/migrations. Ciascun nome file contiene un timestamp usato da Laravel per determinare l’ordine di esecuzione.

Creazione di un file di migration

Con il comando Artisan make:migration generi un nuovo file di migration.
Dal nome della migration, Laravel deduce il nome della tabella e genera lo scaffold appropriato. Con un nome come create_posts_table, viene già preparato il codice che crea la tabella posts.

Struttura di una migration

La classe di migration ha due metodi: up e down.
  • Metodo up: aggiunge tabelle, colonne e indici al database.
  • Metodo down: annulla le operazioni di up. Viene invocato durante il rollback.

Principali metodi per definire le colonne

La classe Blueprint mette a disposizione molti tipi di colonna.

Modificatori delle colonne

Nelle definizioni di colonna puoi concatenare modificatori.

Esecuzione delle migration

Con il comando migrate esegui tutte le migration non ancora eseguite.
Per vedere quali sono state eseguite e quali no usa migrate:status.
In produzione, l’esecuzione delle migration mostra un prompt di conferma. Per eseguire senza conferma usa il flag --force, ma procedi con cautela: alcune operazioni comportano perdita di dati.

Rollback

Per annullare l’ultimo batch di migration usa migrate:rollback.
Per fare il rollback di un numero specifico di step usa --step.
Per fare il rollback di tutte le migration ed eseguirle di nuovo usa migrate:refresh.
migrate:refresh ricrea tutte le tabelle, quindi i dati esistenti vanno persi. Utile per resettare il database durante lo sviluppo.

Esempio pratico: creazione della tabella posts

Vediamo il flusso completo con l’esempio della tabella posts per gestire i post di un blog.

1. Generazione del file di migration

2. Modifica della migration

Apri database/migrations/xxxx_xx_xx_xxxxxx_create_posts_table.php e modificalo.

3. Esecuzione della migration

Dopo l’esecuzione la tabella posts viene creata nel database.

4. Aggiungere una colonna in un secondo momento

Se dopo la creazione della tabella vuoi aggiungere nuove colonne, non modificare la migration esistente: crea una nuova migration.
Evita di modificare direttamente i file di migration esistenti. Comprometteresti la coerenza con gli altri membri del team e con la produzione. Aggiungi sempre le modifiche come nuove migration.

Eventi delle migration

Per ogni operazione di migration viene emesso un evento. Tutti gli eventi ereditano da Illuminate\Database\Events\MigrationEvent. Ad esempio, puoi ascoltare l’evento MigrationsEnded per svuotare la cache al termine delle migration.

Prossimi passi

Database seeding

Impara come inserire dati di esempio nelle tabelle create con le migration.

Introduzione a Eloquent

Impara come manipolare con Eloquent ORM le tabelle create con le migration.
Ultima modifica il 13 luglio 2026