Eu posso't descobrir como adicionar uma nova coluna à minha tabela de banco de dados existente usando a estrutura Laravel.
Eu tentei editar o ficheiro de migração usando...
<?php
public function up()
{
Schema::create('users', function ($table) {
$table->integer("paid");
});
}
No terminal, eu executo php artisan migrate:install' e
migrate'.
Como posso adicionar novas colunas?
Para criar uma migração, você pode usar o comando migrate:make no CLI do Artisan. Use um nome específico para evitar conflitos com modelos existentes
para o Laravel 3:
php artisan migrate:make add_paid_to_users
para o Laravel 5+:
php artisan make:migration add_paid_to_users_table --table=users
Você então precisa utilizar o método Schema::table()
(como você're acessando uma tabela existente, não criando uma nova). E você pode adicionar uma coluna como esta:
public function up()
{
Schema::table('users', function($table) {
$table->integer('paid');
});
}
e don'não se esqueça de adicionar a opção de rollback:
public function down()
{
Schema::table('users', function($table) {
$table->dropColumn('paid');
});
}
Depois podes fazer as tuas migrações:
php artisan migrate
Tudo isto está bem coberto na documentação de ambos os Laravel 3:
E para Laravel 4 / Laravel 5:
Editar:
use $table->integer('paid')->after('qualquer_coluna');
para adicionar este campo após uma coluna específica.
Se você'estiver usando Laravel 5, o comando seria;
php artisan make:migration add_paid_to_users
Todos os comandos para fazer coisas (controladores, modelos, migrações, etc.) foram movidos sob o comando make:
.
Mas a "migração de artesãos" continua a ser a mesma.
Você pode adicionar novas colunas dentro do método inicial `Schema::create' como este:
Schema::create('users', function($table) {
$table->integer("paied");
$table->string("title");
$table->text("description");
$table->timestamps();
});
Se você já criou uma tabela, você pode adicionar colunas adicionais a essa tabela criando uma nova migração e utilizando o método Schema::table
:
Schema::table('users', function($table) {
$table->string("title");
$table->text("description");
$table->timestamps();
});
A documentação é bastante completa sobre isso, e não mudou muito de versão 3 para versão 4.