Aggiungi una nuova colonna alla tabella esistente in una migrazione

Non riesco davvero a capire come aggiungere una nuova colonna alla mia tabella esistente nel mio database usando PHP laravel framework.

Ho provato a modificare il file di migrazione in

public function up() { Schema::create('users', function($table){ $table->integer("paid"); }); } 

e in terminal php artisan migrate:install e migrate

Come aggiungere nuove colonne?

Per creare una migrazione, è ansible utilizzare il comando migrate: make sulla CLI Artisan. Utilizzare un nome specifico per evitare il contrasto con i modelli esistenti

per Laravel 3:

 php artisan migrate:make add_paid_to_users 

per Laravel 5+:

 php artisan make:migration add_paid_to_users 

È quindi necessario utilizzare il metodo Schema::table() (mentre si accede a una tabella esistente, non ne viene creata una nuova). E puoi aggiungere una colonna come questa:

 public function up() { Schema::table('users', function($table) { $table->integer('paid'); }); } 

e non dimenticare di aggiungere l’opzione di rollback:

 public function down() { Schema::table('users', function($table) { $table->dropColumn('paid'); }); } 

Quindi puoi eseguire le tue migrazioni:

 php artisan migrate 

Questo è tutto ben trattato nella documentazione di entrambi i Laravel 3:

  • Schema Builder
  • migrazioni

E per Laravel 4 / Laravel 5:

  • Schema Builder
  • migrazioni

Modificare:

usa $table->integer('paid')->after(whichever_column); per aggiungere questo campo dopo una colonna specifica.

Aggiungerò la risposta di mike3875 ai lettori futuri utilizzando Laravel 5.1 e successivi.

Per rendere le cose più veloci, puoi usare il flag “–table” come questo:

 php artisan make:migration add_paid_to_users --table="users" 

Ciò aggiungerà automaticamente il contenuto del metodo up e down :

 /** * Run the migrations. * * @return void */ public function up() { Schema::table('users', function (Blueprint $table) { // }); } 

--create["table_name"] , è ansible utilizzare l’ --create["table_name"] durante la creazione di nuove migrazioni che aggiungeranno più hotplate alle migrazioni. Piccolo punto, ma utile quando ne fai un sacco!

Se stai usando Laravel 5, il comando sarebbe;

 php artisan make:migration add_paid_to_users 

Tutti i comandi per creare cose (controller, modelli, migrazioni ecc.) Sono stati spostati sotto make: command.

php artisan migrate è sempre lo stesso però.

Puoi aggiungere nuove colonne all’interno del metodo Schema::create iniziale come questo:

 Schema::create('users', function($table) { $table->integer("paied"); $table->string("title"); $table->text("description"); $table->timestamps(); }); 

Se hai già creato una tabella, puoi aggiungere ulteriori colonne a tale tabella creando una nuova migrazione e utilizzando il metodo Schema::table :

 Schema::table('users', function($table) { $table->string("title"); $table->text("description"); $table->timestamps(); }); 

La documentazione è abbastanza approfondita su questo, e non è cambiata troppo dalla versione 3 alla versione 4 .

puoi semplicemente modificare il tuo file di migrazione esistente, ad esempio aggiungendo una colonna nella tabella e quindi digitando nel terminale:

 $ php artisan migrate:refresh 

questa cosa funziona su laravel 5.1.

prima, sul tuo terminale esegui questo codice

 php artisan make:migration add_paid_to_users --table=users 

dopodiché vai nella directory del tuo progetto ed espandi il database delle directory – migrazione e modifica del file add_paid_to_users.php, aggiungi questo codice

 public function up() { Schema::table('users', function (Blueprint $table) { $table->string('paid'); //just add this line }); } 

dopodiché torna al tuo terminale ed esegui questo comando

 php artisan migrate 

spero che questo aiuto.

laravel 5.6

nel caso in cui si desideri aggiungere una nuova colonna come FOREIGN KEY a una tabella esistente.

Crea una nuova migrazione eseguendo questo comando: make: migration

Esempio :

 php artisan make:migration add_store_id_to_users_table --table=users 

Nella cartella database / migrazioni hai un nuovo file di migrazione, qualcosa del tipo:

2018_08_08_093431_add_store_id_to_users_table.php (guarda i commenti)

 integer('store_id')->unsigned()->nullable()->after('password'); // 2. Create foreign key constraints $table->foreign('store_id')->references('id')->on('stores')->onDelete('SET NULL'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('users', function (Blueprint $table) { // 1. Drop foreign key constraints $table->dropForeign(['store_id']); // 2. Drop the column $table->dropColumn('store_id'); }); } } 

Dopo di che esegui il comando:

 php artisan migrate 

Nel caso in cui si desideri annullare l’ultima migrazione per qualsiasi motivo, eseguire questo comando:

 php artisan migrate:rollback 

Puoi trovare ulteriori informazioni sulle migrazioni nei documenti