laravel migration

In questo articolo approfondiremo uno degli aspetti fondamentali dello sviluppo web: Laravel Migration

In questo articolo punterò a far luce sul significato, i vantaggi e l’implementazione pratica di Laravel Migration

Andremo a vedere come Laravel Migration, può migliorare i tuoi progetti di sviluppo web, semplificare la gestione del tuo database, mantenere l’integrità dei dati e sfruttare tipi di dati, controller e connessioni al database.

Tempo Stimato di Lettura: 8 minuti

Devi fare il re-factoring di un progetto importante utilizzando tecnologie innovative, e quindi rifare anche la base dati ?. In una call ti hanno parlato di un framework e delle migration laravel, studiato per progetti importanti, incuriosito, hai deciso di provarlo per capire se possa fare al caso tuo. L’unico inconveniente, però, è che non hai la benché minima idea di come lavorare con le migration laravel e con il framework laravel php.

Ebbene, sono molto lieto di dirti che sei capitato nel posto giusto al momento giusto: di seguito, infatti, ti fornirò tutte le istruzioni necessarie per avvalerti dei vantaggi delle migration laravel, per la creazione e la gestione del tuo database. Non temere, non si tratta di operazioni complesse, l’importante è avere le idee chiare su come organizzare e strutturare il tutto: apprenderai quanto ti serve per iniziare proprio nel corso di questo articolo.

Dunque, cosa ne pensi di metterti subito in azione? Siediti comodo, ritagliati qualche minuto di tempo per te e leggi tutto e vedi gli esempi migration laravel: sono sicuro che, al termine della guida, sarai perfettamente in grado di creare e gestire un database con eloquent. Detto ciò, non mi resta che augurarti buona lettura e buon lavoro!

Cosa sono le Laravel Migration

Le migration di Laravel sono fondamentali per gestire le modifiche al database nelle applicazioni Laravel. Offrono un approccio organizzato per sincronizzare il database con la base di codice della tua applicazione in vari ambienti. Immagina che la tua applicazione si evolva nel tempo, richiedendo modifiche alla struttura del database o l’aggiunta di nuove tabelle e tipi di dati. Le migrazioni impediscono che questo processo diventi un calvario manuale e soggetto a errori. Ogni file di migrazione è contrassegnato con timestamp, garantendo una cronologia chiara delle modifiche eseguite nell’ordine in cui sono state create. Ciò semplifica attività come il rollback a stati precedenti o l’applicazione di modifiche in modo incrementale.

Perché usare le Laravel Migration

Laravel Migration offre una serie di vantaggi che lo rendono uno strumento indispensabile per gli sviluppatori web che lavorano con il framework PHP Laravel. Elenchiamo alcune caratteristiche delle Migration di Laravel:

  • Gestione dello schema del database: Laravel Migration aiuta a gestire e controllare le versioni degli schemi del database e dei tipi di dati, consentendo modifiche strutturate e organizzate alla struttura del database nel tempo;
  • Controllo della versione: Le migration vengono monitorate nei sistemi di controllo delle versioni come Git, garantendo che le modifiche al database possano essere facilmente riviste, annullate o applicate in tutti gli ambienti di sviluppo;
  • Portabilità del database: Laravel fornisce un approccio indipendente dal database, consentendo di scrivere le modifiche allo schema una sola volta e di passare facilmente tra diversi sistemi di database, come MySQL, PostgreSQL, SQLite o SQL Server;
  • Rollback e ripristino: Le migration offrono strumenti per ripristinare o reimpostare le modifiche al database, consentendo agli sviluppatori di recuperare errori, modificare lo schema e mantenere uno stato stabile del database;
  • Documentazione: Le migration servono come documentazione per l’evoluzione dello schema del database: ogni file di migration contiene una marca temporale e una descrizione delle modifiche apportate, migliorando la trasparenza e la manutenibilità della base di codice;
  • Controllo cronologia e rollback: Laravel tiene traccia delle migrazioni eseguite e offre limitazioni di rollback, garantendo che le migration siano idempotenti e controllate nella loro applicazione e nel rollback;
  • Seeding per la popolazione dei dati: Laravel fornisce anche capacità di seeding dei dati tramite seeder, spesso utilizzati in combinazione con i controller. Questa funzionalità consente di popolare il database con dati iniziali, rendendolo un prezioso complemento alle migration per il mantenimento dell’integrità dei dati;
  • Integrazione perfetta con i test: Questa integrazione consente agli sviluppatori di creare database di prova con lo stesso schema del database principale dell’applicazione, semplificando la scrittura e l’esecuzione di test correlati al database;
  • Coerenza della base di codice: Incapsulando le modifiche del database nei file di migration, si garantisce che ogni sviluppatore che lavora al progetto possa applicare queste modifiche in modo uniforme nei diversi ambienti, dalle configurazioni di sviluppo locali ai server di produzione.
  • Gestione delle dipendenze: La funzionalità di gestione delle dipendenze semplifica il processo di gestione di modifiche complesse al database che si basano sull’esistenza di determinate strutture.
  • Collaborazione: Poiché lo schema del database è definito nel codice, più sviluppatori possono lavorarci contemporaneamente e qualsiasi modifica allo schema può essere facilmente condivisa e unita tramite sistemi di controllo delle versioni come Git. Ciò semplifica il processo di sviluppo e riduce i conflitti.

Come implementare le migration di laravel

Creare una migration in Laravel è fondamentale per gestire le modifiche allo schema del database. Esaminiamo il processo di creazione di una migration semplice per comprenderne meglio la struttura, inclusi i tipi di dati e i controller.

Creare una migration

In Laravel, puoi creare una migration usando il comando Artisan make:migration. Apri il tuo terminale e vai alla directory del tuo progetto Laravel. Quindi, esegui il seguente comando:

php artisan make:migration create_example_table

create migration
Laravel Migration progetto

Questo comando creerà un nuovo file di migrazione nella directory database/migrations con un nome del tipo 2024_07_18_000000_create_example_table.php. Il timestamp nel nome del file assicura che le migration vengano eseguite nell’ordine in cui sono state create.

laravel migration
laravel migration tabella create

Definire lo schema

Aprendo un file di migration, troverai due metodi: up e down. Il metodo up definisce le modifiche che vuoi apportare allo schema del tuo database, inclusa la specifica di tipi di dati e controller, mentre il metodo down specifica come invertire tali modifiche.

<?php

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

return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('houses', function (Blueprint $table) {
$table->id();
$table->foreignId('worksite_id')->constrained('worksites')->cascadeOnDelete();
$table->foreignId('state_id')->constrained('states')->cascadeOnDelete();
$table->string('code');
$table->foreignId('typeofhouse_id')->constrained('typeof_houses')->cascadeOnDelete();
$table->unsignedSmallInteger('room_number');
$table->string('floor');
$table->float('mqc');
$table->double('price');
$table->double('minimum_price');
$table->double('minimum_deposit');
$table->string('attachment')->nullable();
$table->text('followup')->nullable();
$table->text('note')->nullable();
$table->timestamps();
});
}

/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('houses');
}
};

Aggiunta di colonne nella tabella

Se vuoi aggiungere un nuovo attributo ad un’entità di dato, cioè una colonna di una tabella già esistente, devi eseguire il seguente comando:

php artisan make:migration add_new_column_to_example_table --table=example

laravel migration laravel

Aprendo il file appena creato
(ad esempio, 2024_08_18_145408_add_new_column_to_example_table.php) e modificare i metodi up e down come segue:

<?php

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

return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('example', function (Blueprint $table) {
$table->string('new_column')->nullable(); // Adding a new column
});
}

/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('example', function (Blueprint $table) {
$table->dropColumn('new_column'); // Dropping the added column
});
}
};

Esecuzione della migrazione

Per applicare la migrazione e creare la tabella di esempio nel database, eseguire il seguente comando Artisan:

php artisan migrate

Questo comando esegue tutte le migrazioni in sospeso. Laravel tiene traccia di quali migrazioni sono già state eseguite nella tabella delle migrazioni del tuo database.

migrations tabella
laravel migration tabella

Le migration e gli indici

La modifica degli indici del database, inclusa l’aggiunta, la rinominazione o la rimozione, può essere eseguita tramite le migrazioni Laravel. Esaminiamo il processo per ciascuna di queste azioni.

Aggiunta all’indice:

usa Illuminate\Database\Schema\Blueprint; 
usa Illuminate\Support\Facades\Schema;
Schema::table( 'utenti' , function (Blueprint $table) {
$table-> index ( 'email' );
}

Rinomina indice:

Per rinominare un indice, puoi usare

renameIndex (): 
$table -> renameIndex ( 'email' , 'numero_mobile' );
}

Rimozione dell’indice:

Per eliminare un indice, puoi usare

dropIndex (): 
$tabella -> dropIndex ( 'email' );
}

Utilizzo di vincoli di chiave esterna:

Laravel può aiutarti a creare vincoli di chiave esterna, che garantiscono che i dati nel tuo database rimangano coerenti e seguano le relazioni tra le diverse tabelle.

{ $table -> foreignId ('id') 
vincolato ('utenti')
cascadeOnUpdate ()
cascadeOnDelete ();}

Best Practice e strategie per la migrazione di Laravel

Mantenere le migrazioni piccole e specifiche:

È meglio creare più piccole migrazioni piuttosto che una grande. Questo approccio consente di tracciare e individuare più facilmente i problemi se si presentano.

Documenta le tue modifiche:

Nel metodo up della tua migrazione, aggiungi commenti per descrivere cosa fa la migrazione. Questa documentazione è inestimabile quando tu o il tuo team dovete comprendere le modifiche passate.

Test delle migrazioni:

Testa sempre le tue migrazioni in un ambiente di staging prima di applicarle a un database di produzione. Questo aiuta a individuare i problemi prima che influiscano sul tuo sistema live.

Piano di rollback:

Assicurati di avere un piano di rollback in atto per ogni migrazione. Gli errori possono capitare e devi essere in grado di annullare le modifiche se qualcosa va storto.

Sfrutta il controllo della versione

Utilizza un sistema di controllo delle versioni come Git per tracciare le tue migrazioni. Questo fornisce un audit trail e consente la collaborazione con i membri del team.

Autore