Ik kan er niet achter komen hoe ik een nieuwe kolom aan mijn bestaande database tabel kan toevoegen met behulp van het Laravel framework.
Ik heb geprobeerd om het migratie bestand te bewerken met...
<?php
public function up()
{
Schema::create('users', function ($table) {
$table->integer("paid");
});
}
In terminal, voer ik php artisan migrate:install
en migrate
uit.
Hoe voeg ik nieuwe kolommen toe?
Om een migratie te maken, kunt u het migrate:make commando gebruiken op de Artisan CLI. Gebruik een specifieke naam om botsingen met bestaande modellen te voorkomen
voor Laravel 3:
php artisan migrate:make add_paid_to_users
voor Laravel 5+:
php artisan make:migration add_paid_to_users_table --table=users
Je moet dan de Schema::table()
methode gebruiken (omdat je'een bestaande tabel benadert, en geen nieuwe aanmaakt). En je kunt een kolom toevoegen zoals dit:
public function up()
{
Schema::table('users', function($table) {
$table->integer('paid');
});
}
en vergeet niet de terugdraai optie toe te voegen:
public function down()
{
Schema::table('users', function($table) {
$table->dropColumn('paid');
});
}
Dan kunt u uw migraties uitvoeren:
php artisan migrate
Dit wordt allemaal goed behandeld in de documentatie voor zowel Laravel 3:
En voor Laravel 4 / Laravel 5:
Bewerken:
gebruik $table->integer('paid')->after('whichever_column');
om dit veld na specifieke kolom toe te voegen.
Als je Laravel 5 gebruikt, zou het commando zijn;
php artisan make:migration add_paid_to_users
Alle commando's om dingen te maken (controllers, modellen, migraties etc) zijn verplaatst naar het make:
commando.
Het php artisan migrate
commando is echter nog steeds hetzelfde.
U kunt nieuwe kolommen toevoegen binnen de initiële Schema::create
methode op deze manier:
Schema::create('users', function($table) {
$table->integer("paied");
$table->string("title");
$table->text("description");
$table->timestamps();
});
Als u al een tabel heeft aangemaakt kunt u extra kolommen aan die tabel toevoegen door een nieuwe migratie aan te maken en de Schema::table
methode te gebruiken:
Schema::table('users', function($table) {
$table->string("title");
$table->text("description");
$table->timestamps();
});
De documentatie is hier vrij grondig over, en is niet veel veranderd van versie 3 naar versie 4.