laravel

Laravel Come aggiungere una colonna a una tabella esistente

Laravel Come aggiungere una colonna a una tabella esistente

Problema

L'aggiunta di nuove colonne alle migrazioni di Laravel è una cosa comune. Le applicazioni sono pensate per essere scalabili, il che significa che l'aggiunta di nuove funzionalità sviluppa ulteriormente la tua applicazione.

Molto spesso, i nuovi sviluppatori di Laravel devono eseguire le loro migrazioni ma non si assicurano che le migrazioni possano eseguire il rollback e migrare più volte senza interrompere nulla.

Anche se questo non è il nostro obiettivo, penso che fosse importante affermarlo prima di affrontare il nostro problema.

Quello che segue è un problema comune che i nuovi sviluppatori di Laravel cercheranno di fare quando vogliono aggiungere una nuova colonna a una tabella esistente.

Quindi a questo punto hanno già fatto qualcosa del tipo:

funzione pubblica su()

Schema::create('organizzazioni', funzione ($tabella)
$table->increments('id');
$table->string('name')->nullable();
$table->text('about')->nullable();
);

Questo creerà una nuova tabella per loro. E per renderlo pulito, dovresti anche aggiungere la funzione giù e rilasciare l'intera tabella in questo caso. La funzione down verrà eseguita quando si desidera eseguire il rollback della migrazione.

Passando attraverso tutto ciò, il vero problema si presenta quando dimenticano una colonna e vogliono aggiungerla in seguito, quindi creano un nuovo file di migrazione (classe) e provano a eseguire qualcosa del tipo:

funzione pubblica su()

Schema::create('organizzazioni', funzione ($tabella)
$table->integer('size')->nullable();
);

Sperano di aggiungere una nuova dimensione di colonna alla tabella esistente.

Ora vediamo cosa succede e come evitare che accada di nuovo.

Soluzione

Il problema principale qui è ciò che i nuovi sviluppatori spesso tendono a non notare quale è il nome del metodo statico dello schema . Usi create solo quando crei inizialmente la tua tabella. Se hai bisogno di aggiornare ulteriormente la tua tabella in qualsiasi momento, desideri utilizzare invece la tabella.

Quindi la funzione real up dovrebbe essere così:

funzione pubblica su()

Schema::table('organizations', function ($table)
$table->integer('size')->nullable();
);

E la funzione down sarebbe così:

funzione pubblica giù()

Schema::table('organizations', function($table)
$table->dropColumn('size');
);

Il mio consiglio personale per te è che dopo aver creato il tuo nuovo file di migrazione (modificato), procedi come segue:

Un altro consiglio

Questo sarà utile in una fase successiva se vuoi automatizzare la tua distribuzione e il tuo script deve eseguire un rollback.

Un altro consiglio che posso darti è quello di pianificare dove vuoi posizionare la tua colonna. Solo così facendo, Laravel posizionerà la tua nuova colonna alla fine, probabilmente dopo la colonna update_at. (La maggior parte dei tavoli ha questo)

Vuoi usare un metodo dopo in modo che il tuo codice finale assomigli a questo:

funzione pubblica su()

Schema::table('organizations', function ($table)
$table->integer('size')->after('name')->nullable();
);

In questo caso, Laravel posizionerà la tua nuova colonna subito dopo la colonna del nome in modo che abbia un bell'aspetto e sia organizzata molto meglio.

Trackpad e puntatore del mouse su schermo AppyMouse per tablet Windows
Gli utenti di tablet spesso mancano il puntatore del mouse, soprattutto quando sono abituati a usare i laptop laptop. Gli smartphone e i tablet touchs...
Il pulsante centrale del mouse non funziona in Windows 10
Il tasto centrale del mouse ti aiuta a scorrere lunghe pagine web e schermate con molti dati. Se si ferma, finirai per usare la tastiera per lo scorri...
Come cambiare i pulsanti sinistro e destro del mouse su PC Windows 10
È abbastanza normale che tutti i mouse dei computer siano progettati ergonomicamente per gli utenti destrimani. Ma sono disponibili dispositivi mouse ...