Não consigo descobrir como adicionar uma nova coluna à minha tabela de banco de dados existente usando a estrutura do Laravel.
Tentei editar o arquivo 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 adiciono novas colunas?
php
laravel
laravel-4
laravel-migrations
kim larsen
fonte
fonte
Respostas:
Para criar uma migração, você pode usar o comando migrate: make na Artisan CLI. Use um nome específico para evitar conflitos com modelos existentes
para o Laravel 3:
para o Laravel 5+:
Você precisará usar o
Schema::table()
método (como você está acessando uma tabela existente, não criando uma nova). E você pode adicionar uma coluna como esta:e não se esqueça de adicionar a opção de reversão:
Então você pode executar suas migrações:
Tudo isso está bem coberto na documentação do Laravel 3:
E para o Laravel 4 / Laravel 5:
Editar:
use
$table->integer('paid')->after('whichever_column');
para adicionar este campo após uma coluna específica.fonte
php artisan migrate
php artisan make:migration add_paid_to_users
Acrescentarei a resposta de mike3875 para futuros leitores usando o Laravel 5.1 e seguintes.
Para tornar as coisas mais rápidas, você pode usar a bandeira "--table" assim:
Isso adicionará o conteúdo do método
up
edown
automaticamente:Da mesma forma, você pode usar a
--create["table_name"]
opção ao criar novas migrações que adicionarão mais clichê às suas migrações. Ponto pequeno, mas útil ao fazer um monte deles!fonte
Blueprint
foi adicionado no Laravel 5.1. Apenas um ponto de esclarecimento é tudo.Se você estiver usando o Laravel 5, o comando seria;
Todos os comandos para fazer as coisas (controladores, modelos, migrações etc.) foram movidos sob o
make:
comandophp artisan migrate
ainda é o mesmo.fonte
laravel 5.6 e superior
caso você queira adicionar uma nova coluna como uma CHAVE ESTRANGEIRA a uma tabela existente.
Crie uma nova migração executando este comando: make: migration
Exemplo:
Na pasta banco de dados / migrações, você tem um novo arquivo de migração, algo como:
2018_08_08_093431_add_store_id_to_users_table.php (veja os comentários)
Depois disso, execute o comando:
Caso você queira desfazer a última migração por qualquer motivo, execute este comando:
Você pode encontrar mais informações sobre migrações nos documentos
fonte
Você pode adicionar novas colunas dentro do
Schema::create
método inicial como este:Se você já criou uma tabela, pode adicionar colunas adicionais a essa tabela criando uma nova migração e usando o
Schema::table
método:A documentação é bastante completa sobre isso e não mudou muito da versão 3 para a versão 4 .
fonte
create_users_table
, então se eu estou adicionando colunas:add_email_password_columns_to_users
.add_
" verbo na frente de cada arquivo para acompanhar as alterações. Dessa forma, é mais fácil rastrear alterações no controle de versão, etc., porque um novo arquivo de adição é criado para cada iteração. Se você continuasse modificando o "create_
", seria difícil saber que x empregado, tinha estragado alguma coisa removendo um índice ou adicionando uma nova coluna etc etc. pelo menos isso faz sentido na minha cabeça! :)você pode simplesmente modificar seu arquivo de migração existente, por exemplo, adicionando uma coluna à sua tabela e digitando o seu terminal:
fonte
isso é trabalhado no laravel 5.1.
primeiro, no seu terminal, execute este código
depois disso, vá para o diretório do projeto e expanda o banco de dados do diretório - migração e edição do arquivo add_paid_to_users.php, adicione este código
Depois disso, volte ao seu terminal e execute este comando
Espero que isso ajude.
fonte
Primeiro reverta sua migração anterior
Depois disso, você pode modificar o arquivo de migração existente (adicionar novo, renomear ou excluir colunas) e executar novamente o arquivo de migração
fonte
Embora um arquivo de migração seja a melhor prática, como já foi mencionado por outros, em uma pitada, você também pode adicionar uma coluna com o funileiro.
Aqui está um exemplo de uma linha para o terminal:
(Aqui está formatado para facilitar a leitura)
fonte