This website uses cookies

Our website, platform and/or any sub domains use cookies to understand how you use our services, and to improve both your experience and our marketing relevance.

O guia definitivo para migrações em Laravel

Updated on October 3, 2025

11 Min Read

Principais conclusões:

  • As migrações Laravel fornecem uma forma estruturada e controlada por versão para gerir as alterações do esquema da base de dados, garantindo a consistência entre ambientes.
  • A utilização de migrações simplifica a gestão de bases de dados, permite reversões fáceis e apoia a colaboração entre programadores, conduzindo a um fluxo de trabalho de desenvolvimento mais eficiente.

As migrações Laravel são fundamentais para gerir as alterações da base de dados nas aplicações Laravel. Oferecem uma abordagem organizada para sincronizar a tua base de dados com a base de código da tua aplicação em vários ambientes.

Imagina que a tua aplicação evolui ao longo do tempo, exigindo alterações à estrutura da base de dados ou a adição de novas tabelas. As migrações evitam que este processo se torne uma provação manual e propensa a erros.

Cada ficheiro de migração tem um carimbo de data/hora, garantindo um histórico claro das alterações executadas pela ordem em que foram criadas. Isto simplifica tarefas como reverter para estados anteriores ou aplicar alterações de forma incremental.

Este artigo fornece um tutorial abrangente sobre a Migração do Laravel, destacando sua importância, benefícios e uso prático. Quer sejas um principiante ou um programador experiente, este guia fornece-te os conhecimentos necessários para utilizares eficazmente a Migração Laravel.

O que são migrações do Laravel?

A Migração Laravel é um conjunto de instruções que definem as alterações que pretendes fazer ao esquema da tua base de dados. Essas alterações podem incluir a criação de novas tabelas, a alteração de tabelas existentes, a adição ou modificação de colunas e a alimentação da base de dados com dados iniciais.

Ao encapsular essas alterações em arquivos de migração, o Laravel garante que o esquema do seu banco de dados permaneça sincronizado com a base de código do seu aplicativo, facilitando o gerenciamento de alterações no banco de dados em diferentes ambientes de desenvolvimento e estágios de implantação.

O Laravel permite-te efetuar migrações sem te preocupares com o sistema de base de dados específico que estás a utilizar, quer seja MySQL, PostgreSQL, SQLite, ou outros suportados pelo Laravel. A estrutura abstrai a sintaxe específica da base de dados, tornando as migrações portáteis e adaptáveis a diferentes sistemas de bases de dados.

Desbloqueia todo o potencial das migrações Laravel com o nosso recurso definitivo.

Experimenta o poder das Migrações Laravel na Cloudways, agiliza o teu fluxo de trabalho de desenvolvimento com facilidade.

Por que usarias as migrações do Laravel?

As Migrações Laravel oferecem uma grande quantidade de benefícios que as tornam uma ferramenta obrigatória para os programadores web que trabalham com a estrutura PHP Laravel. Vamos explorar algumas das principais razões pelas quais você escolheria usar as Migrações Laravel em seus projetos de desenvolvimento web.

Aspeto Explicação
Gerenciamento de esquema de banco de dados O Laravel Migrations ajuda a gerir e a controlar as versões dos esquemas das bases de dados, permitindo alterações estruturadas e organizadas na estrutura da base de dados ao longo do tempo.
Controlo de versões As migrações são acompanhadas em sistemas de controlo de versões como o Git, garantindo que as alterações à base de dados podem ser facilmente revistas, revertidas ou aplicadas em ambientes de desenvolvimento.
Portabilidade da base de dados Laravel fornece uma abordagem agnóstica de base de dados, permitindo-te escrever alterações de esquema uma vez e alternar facilmente entre diferentes sistemas de base de dados, como MySQL, PostgreSQL, SQLite ou SQL Server.
Reversão e recuperação As migrações oferecem ferramentas para reverter ou repor as alterações da base de dados, permitindo aos programadores recuperar de erros, ajustar o esquema e manter um estado estável da base de dados.
Documentação As migrações servem de documentação para a evolução do esquema da base de dados, com cada ficheiro de migração a conter um carimbo de data/hora e uma descrição das alterações efectuadas, melhorando a transparência e a facilidade de manutenção da base de código.
Histórico e Controlo de Rollback O Laravel mantém um registo das migrações executadas e oferece limitações de rollback, garantindo que as migrações são idempotentes e controladas na sua aplicação e rollback.
Integração perfeita com testes Esta integração permite que os programadores criem bases de dados de teste com o mesmo esquema da base de dados principal da aplicação, facilitando a escrita e a execução de testes relacionados com a base de dados
Consistência da base de dados Ao encapsular as alterações da base de dados em ficheiros de migração, garante que todos os programadores que trabalham no projeto podem aplicar estas alterações de forma uniforme em diferentes ambientes, desde configurações de desenvolvimento local a servidores de produção.
Gestão de dependências A funcionalidade de gestão de dependências simplifica o processo de gestão de alterações complexas à base de dados que dependem da existência de determinadas estruturas.
Colaboração Uma vez que o esquema da base de dados é definido em código, vários programadores podem trabalhar nele em simultâneo, e quaisquer alterações ao esquema podem ser facilmente partilhadas e fundidas utilizando sistemas de controlo de versões como o Git. Isto simplifica o processo de desenvolvimento e reduz os conflitos.

Conceitos básicos de migração

Quando estás a começar a construir com Laravel, tens de compreender as migrações. As migrações são uma forma de versionar o teu esquema de base de dados. Permitem-te modificar o teu esquema de base de dados de uma forma estável e controlada.

Cria uma nova migração executando o comando make:migration no terminal. Se tivesses de fazer uma migração para adicionar uma nova tabela chamada produtos, por exemplo, executarias:

php artisan make:migration create_products_table


Isto irá gerar um novo ficheiro de migração no diretório de bases de dados/migrações do teu projeto.

Estrutura de migração

Um ficheiro de migração contém normalmente dois métodos: ascendente e descendente. O método up é aplicado para modificar o esquema da base de dados e o método down é utilizado para reverter as modificações. Este é um exemplo do aspeto de um ficheiro de migração:

utiliza o Illuminate\Database\Migrations\Migration;
utiliza Illuminate\Database\Schema\Blueprint;
class CreateProductsTable extends Migration
{
  função pública up()
Schema::create('products', function (Blueprint $table) {
  $table->id();
  $table->string('name');
  $table->string('description');
$table->timestamps();
  });
  }

  função pública down()
{
  Schema::dropIfExists('products');
}

Aqui, o método up cria uma tabela com o nome de produtos e o método down elimina-a.

Comandos de migração comuns

Depois de teres feito a tua migração, podes executá-la com os seguintes comandos:

  • php artisan migrate: Executa todas as migrações pendentes.
  • php artisan migrate:rollback: Desfaz a última migração executada.
  • php artisan migrate:reset: Desfaz todas as migrações.
  • php artisan migrate:refresh: Desfaz todas as migrações e depois volta a executá-las.

Estes comandos são importantes para manter as alterações do esquema da tua base de dados.

Tipos de dados e restrições

Em Laravel, vem com uma variedade de tipos de dados e restrições. Podes utilizar estes tipos de dados e restrições nas tuas migrações para definir a estrutura das tabelas da tua base de dados com bastante facilidade.

Tipos de dados de coluna

Eis alguns dos tipos de dados mais utilizados:

  • $table->id(): Isto é para uma chave primária auto-incrementante.
  • $table->string(‘nome_da_coluna’): Reflete uma coluna de string com um comprimento máximo de 255 caracteres.
  • $table->integer(‘nome_da_coluna’): Representa uma coluna inteira.
  • $table->timestamps(): Este tipo de dados adicionará automaticamente as colunas created_at e updated_at timestamp.
  • $table->foreignId(‘nome_da_coluna’): Isto é para refletir uma coluna de chave estrangeira que referencia a coluna id de outra tabela.

Restrições

As restrições ajudam a garantir a integridade dos dados, impondo regras aos dados armazenados nas tuas tabelas:

  • Chave primária: $table->primary(‘column_name’)
  • Chave estrangeira: $table->foreign(‘column_name’)->references(‘id’)->on(‘other_table’)
  • Restrição única: $table->unique(‘nome_da_coluna’)
  • Indexa: $table->index(‘nome_da_coluna’)

Segue-se um exemplo que utiliza alguns destes tipos de dados e restrições:

Schema::create('orders', function (Blueprint $table) {
  $table->id();
  $table->foreignId('customer_id')->constrained();
  $table->string('order_number')->unique();
  $table->timestamps();
});

No bloco de código acima, o exemplo é para customer_id. É uma chave externa que faz referência à coluna id da tabela de clientes, e order_number é uma cadeia de caracteres única.

Como implementar a migração para Laravel?

Criar uma migração no Laravel é fundamental para gerir as alterações do esquema da tua base de dados. Vamos analisar o processo de criação de uma migração simples para entender melhor sua estrutura.

Passo 1: Cria uma migração

No Laravel, podes criar uma migração utilizando o comando make:migration Artisan. Abre o teu terminal e navega para o teu diretório de projeto Laravel. Em seguida, executa o seguinte comando:

php artisan make:migration create_example_table

Esse comando criará um novo arquivo de migração no diretório database/migrations com um nome como 2023_09_18_000000_create_example_table.php. O carimbo de data/hora no nome do arquivo garante que as migrações sejam executadas na ordem em que foram criadas.

Passo 2: Define o esquema

Abre o ficheiro de migração recém-criado utilizando um editor de código ou o editor de texto de linha de comandos da tua escolha. Encontrarás dois métodos no ficheiro de migração: para cima e para baixo. O método up define as alterações que pretende fazer ao esquema da base de dados, enquanto o método down especifica como reverter essas alterações.

Aqui está um exemplo de uma migração simples que cria uma tabela chamada exemplo com duas colunas:

utiliza o Illuminate\Database\Migrations\Migration;
utiliza Illuminate\Database\Schema\Blueprint;
utiliza o esquema Illuminate\Support\Facades\Schema;
class CreateExampleTable extends Migration
{
função pública up()
{
Schema::create('example', function (Blueprint $table) {
$table->id(); // Chave primária auto-incremental
$table->string('name'); // Uma coluna de string
$table->text('description')->nullable(); // Uma coluna de texto (anulável)
$table->timestamps(); // Carimbos de data e hora de criação e atualização
});
}
função pública down()
{
Schema::dropIfExists('example');
}
}

Passo 3 : Adicionar colunas à tabela

Executa o seguinte comando para criar um novo arquivo de migração que adiciona uma new_column à tabela de exemplo:

php artisan make:migration add_new_column_to_example_table --table=example

Atualização do ficheiro de migração:

Abre o ficheiro de migração recentemente criado (por exemplo, 2023_09_18_123456_add_new_column_to_example_table.php) e modifica os métodos up e down da seguinte forma:

utiliza o Illuminate\Database\Migrations\Migration;
utiliza Illuminate\Database\Schema\Blueprint;
utiliza o esquema Illuminate\Support\Facades\Schema;
class AddNewColumnToExampleTable extends Migration
{
função pública up()
{
Schema::table('example', function (Blueprint $table) {
$table->string('new_column')->nullable(); // Adiciona uma nova coluna
});
}
função pública down()
{
Schema::table('example', function (Blueprint $table) {
$table->dropColumn('new_column'); // Retira a coluna adicionada
});
}
}

Passo 4: Executa a migração

Para aplicar a migração e criar a tabela de exemplo na tua base de dados, executa o seguinte comando Artisan:

php artisan migrate

Este comando executa todas as migrações pendentes. O Laravel mantém um registo das migrações que já foram executadas na tabela de migrações da tua base de dados.

Supera as tuas migrações Laravel com o alojamento Cloudways

Experimenta um alojamento sem complicações para as tuas migrações Laravel e liberta todo o potencial dos teus projectos web

Semeadores e Migrações

Os Seeders são um mecanismo para semear a tua base de dados com os primeiros dados. Os seeders tendem a ser emparelhados com migrações para inicializar a tua base de dados da forma correta inicialmente. Para gerar um seeder, usa o comando make:seeder como mostrado abaixo:

php artisan make:seeder UsersTableSeeder

Isto criará um novo ficheiro semeador dentro do diretório database/seeders.

Exemplo de semeador

Aqui está um exemplo de um semeador básico que preenche a tabela de utilizadores com alguns dados de semente:

usa o Illuminate\Database\Seeder;
utiliza App\Models\User;
class UsersTableSeeder extends Seeder
{
  função pública run()
  {
  Utilizador::cria([
  'name' => 'John Doe',
  'email' => '[email protected]',
'password' => bcrypt('password'),
  ]);

  Utilizador::cria([
  'name' => 'Jane Doe',
  'email' => '[email protected]',
'password' => bcrypt('password'),
  ]));
  }

Executar semeadores

Agora podes executar um semeador facilmente, bastando adicioná-lo à tua classe DatabaseSeeder. Servirá como ponto de entrada para executar semeadores:

usa o Illuminate\Database\Seeder;
utiliza App\Models\User;
usa o Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
  função pública run()
$this->call([
  UsersTableSeeder::class,
  ]);
}

}

Podes então executar o semeador através do seguinte comando:

php artisan db:seed


Os seeders fornecem um método fácil de semear a tua base de dados com dados, particularmente para desenvolvimento ou para inicializar um novo projeto.

Tratamento de erros e resolução de problemas

Durante a migração, podes receber erros. Alguns deles são apresentados abaixo, juntamente com soluções de resolução de problemas sobre o que fazer:

Erros comuns

  • SQLSTATE[42S01]: A tabela ou vista base já existe.

Causa: Tenta criar uma tabela que já existe.
Solução: Certifica-te de que os teus ficheiros de migração não têm a criação não intencional da mesma tabela duas vezes. Deves, antes de criar a tabela, executar Schema::dropIfExists(‘table_name’).

  • SQLSTATE[42S02]: Não encontraste a tabela ou vista base:

Causa: Tenta alterar ou eliminar uma tabela inexistente.
Solução: Certifica-te de que a tabela existe antes de a tentares alterar ou eliminar. Verifica a ordem de migração e certifica-te de que a tabela é criada primeiro, antes de ser referenciada.

  • SQLSTATE[23000]: Violação da restrição de integridade:

Causa: Tenta inserir dados que violam uma restrição (por exemplo, inserir um valor duplicado numa coluna exclusiva).
Solução: Valida os teus dados para garantir que cumprem as restrições especificadas nas tuas migrações.

Estratégias de tratamento de erros

  • Faz uma cópia de segurança da tua base de dados: Nunca te esqueças de fazer uma cópia de segurança da tua base de dados antes de executares migrações, sobretudo em produção.
  • Testa as migrações: Testa as tuas migrações num ambiente de preparação ou desenvolvimento antes de as aplicares na produção.
  • Reverter e atualizar: Em caso de erro, utiliza migrate:rollback para reverter as alterações e depois migrate:refresh para aplicar todas as migrações.

Ao adotar estas estratégias, é possível minimizar o risco de erros e obter uma gestão perfeita do esquema da base de dados.

Outros comandos de migração

Modificar os índices da base de dados, incluindo adicionar, renomear ou removê-los, pode ser feito usando as migrações do Laravel. Vamos percorrer o processo para cada uma dessas ações.

Adicionar ao índice

utiliza Illuminate\Database\Schema\Blueprint;
utiliza o esquema Illuminate\Support\Facades\Schema;
Schema::table('users', function (Blueprint $table) {
$table->index('email');
});

Renomear o índice

Para renomear um índice, podes utilizar renameIndex(), por exemplo,

$table->renameIndex('email', 'mobile_no');

Remover o índice

Para eliminar um índice, podes utilizar dropIndex(), por exemplo,

$table->dropIndex('email');

Utilizar restrições de chave externa

O Laravel pode ajudar-te a criar restrições de chave estrangeira, que garantem que os dados na tua base de dados permanecem consistentes e seguem as relações entre diferentes tabelas.

$table->foreignId('id')
restringido('utilizadores')
cascadeOnUpdate()
cascadeOnDelete();

Conclusão

Em conclusão, o Laravel Migration simplifica a gestão de bases de dados em aplicações Laravel. Oferece controlo de versões, portabilidade da base de dados, suporte de colaboração, capacidades de reversão e consistência e documentação melhoradas.

Estes benefícios melhoram coletivamente o processo de desenvolvimento, tornando-o mais eficiente e fiável, contribuindo também para a manutenção dos projectos Laravel.

Neste blogue, abordámos os aspectos fundamentais e avançados da utilização de migrações para criar, gerir e modificar eficazmente o esquema da base de dados.

Se tiveres alguma dúvida, não hesites em perguntar nos comentários.

Q) O que são migrações no Laravel?

As migrações em Laravel são como um controlo de versão para a tua base de dados. Permitem-te definir e modificar o esquema da tua base de dados de uma forma estruturada usando código PHP. Com as migrações, podes criar, atualizar e remover tabelas e colunas da base de dados de forma eficiente.

Q) A migração é necessária em Laravel?

Embora as migrações não sejam obrigatórias no Laravel, elas são altamente recomendadas. Elas simplificam o gerenciamento do esquema do banco de dados, facilitando o rastreamento de alterações, a colaboração com equipes e a manutenção do controle de versão sem edições manuais.

Q) Como migrar ficheiros no Laravel?

Para migrar ficheiros no Laravel, utiliza o comando php artisan migrate. Isto irá aplicar quaisquer migrações pendentes à tua base de dados. Certifica-te de que os teus ficheiros de migração estão localizados no diretório database/migrations e estão devidamente estruturados para atualizar o esquema da base de dados.

Q) Porque é que devo usar o Laravel Migrations?

As migrações do Laravel ajudam a manter um esquema de base de dados consistente e gerenciável. Permitem-te controlar a versão das alterações à base de dados, facilitando a colaboração com outros programadores. As migrações também permitem reversões fáceis, garantindo que quaisquer alterações possam ser desfeitas sem afetar o resto da aplicação.

P) Posso reverter as migrações do Laravel?

Sim, podes reverter as migrações do Laravel. Utiliza o comando php artisan migrate:rollback para desfazer o último lote de migração. Também podes reverter todas as migrações utilizando php artisan migrate:reset ou php artisan migrate:fresh para eliminar e recriar o esquema da base de dados.

Q) É possível executar migrações do Laravel num ambiente de teste?

Sim, podes executar migrações do Laravel num ambiente de teste. É uma prática comum executar migrações em ambientes separados, como local, preparação e teste, para garantir que suas alterações funcionem antes de implantá-las na produção. O ficheiro .env do Laravel permite-te configurar diferentes ligações à base de dados para cada ambiente.

Q) Quais são as melhores práticas para a migração para Laravel?

As melhores práticas para a migração do Laravel incluem:

  • Cria migrações para cada alteração no esquema da base de dados.
  • Utiliza nomes com significado para os ficheiros de migração.
  • Executa as migrações num ambiente controlado antes de as aplicar na produção.
  • Reverter as migrações para garantir a integridade do esquema durante o desenvolvimento.

Q) Qual é a vantagem da migração em Laravel?

O benefício das migrações no Laravel é que elas fornecem uma maneira estruturada e versionada de gerenciar alterações no banco de dados. As migrações permitem uma colaboração mais fácil entre os desenvolvedores, simplificam a configuração do banco de dados em novos ambientes e tornam possível reverter as alterações se algo der errado.

Q) Como migrar um site Laravel?

Para migrar um site Laravel, precisas de aplicar migrações para configurar o esquema da base de dados. Primeiro, certifica-te de que o teu ambiente está configurado corretamente. Em seguida, executa php artisan migrate para aplicar todas as migrações. Se estiveres a mudar para um novo servidor, podes também ter de transferir as definições do teu ambiente e a base de dados.

Q) Posso modificar colunas existentes nas migrações Laravel?

Sim, podes modificar colunas existentes em migrações Laravel utilizando a função change do método table. Aqui está um exemplo de como o podes fazer:

função pública up()
{
  Schema::table('o teu nome_de_tabela', function (Blueprint $table) {
  $table->string('new_column_name')->change();
  });
}

Share your opinion in the comment section. COMMENT NOW

Share This Article

Salwa Mujtaba

Salwa Mujtaba é redatora de conteúdo técnico na Cloudways. Com uma sólida formação em Ciência da Computação e experiência anterior como líder de equipe em Operações da Cloudways, ela traz uma profunda compreensão da Plataforma Cloudways para sua escrita. Salwa cria conteúdo que simplifica conceitos complexos, tornando-os acessíveis e envolventes para os leitores. Quando não está a escrever, podes encontrá-la a apreciar boa música, a ler um livro ou a passar tempo de qualidade com a sua família.

×

Webinar: How to Get 100% Scores on Core Web Vitals

Join Joe Williams & Aleksandar Savkovic on 29th of March, 2021.

Do you like what you read?

Get the Latest Updates

Share Your Feedback

Please insert Content

Thank you for your feedback!

Do you like what you read?

Get the Latest Updates

Share Your Feedback

Please insert Content

Thank you for your feedback!

Quer experimentar a plataforma Cloudways em todo o seu esplendor?

Faça um tour guiado GRATUITO pela Cloudways e veja por si mesmo como é fácil gerenciar seu servidor e suas aplicações na principal plataforma de hospedagem em nuvem.

Iniciar mi recorrido