Non riesco a capire come aggiungere una nuova colonna alla mia tabella di database esistente utilizzando il framework Laravel.
Ho provato a modificare il file di migrazione usando...
linguaggio: php -->
<?php
public function up()
{
Schema::create('users', function ($table) {
$table->integer("paid");
});
}
Nel terminale, eseguo php artisan migrate:install
e migrate
.
Come faccio ad aggiungere nuove colonne?
Per creare una migrazione, puoi usare il comando migrate:make sulla CLI di Artisan. Usare un nome specifico per evitare conflitti 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_table --table=users
Hai quindi bisogno di usare il metodo Schema::table()
(dato che stai accedendo a una tabella esistente, non creandone 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');
});
}
Poi puoi eseguire le tue migrazioni:
php artisan migrate
Tutto questo è ben coperto nella documentazione sia per Laravel 3:
E per Laravel 4 / Laravel 5:
Modifica:
usa $table->integer('paid')->after('whichever_column');
per aggiungere questo campo dopo una colonna specifica.
Se stai usando Laravel 5, il comando sarebbe;
php artisan make:migration add_paid_to_users
Tutti i comandi per creare cose (controllori, modelli, migrazioni, ecc.) sono stati spostati sotto il comando make:
.
Il comando php artisan migrate
è ancora lo stesso.
Puoi aggiungere nuove colonne all'interno del metodo iniziale Schema::create
in questo modo:
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 quella tabella creando una nuova migrazione e usando il metodo Schema::table
:
Schema::table('users', function($table) {
$table->string("title");
$table->text("description");
$table->timestamps();
});
La documentazione è abbastanza completa su questo, e non è cambiata troppo dalla versione 3 alla versione 4.