Neste capítulo, iremos atualizar o ficheiro das migrações para adicionar novos campos à tabela produtos
. Esta atualização permitirá a adição de novas funcionalidades e a otimização da nossa base de dados. Iremos também explorar alguns conceitos fundamentais das migrações no Laravel e como podemos utilizá-las para gerir as alterações das tabelas na base de dados.
Objetivos
- Compreender o funcionamento das migrações no Laravel
- Atualizar o ficheiro de migração existente
- Adicionar novos campos à tabela
produtos
- Testar as alterações
Atualização do Ficheiro de Migração
Para iniciar, vamos navegar até ao diretório database\migrations
. Aqui, encontramos o nosso ficheiro de migração da tabela produtos
. O seu conteúdo deve ser semelhante ao seguinte:
Schema::create('produtos', function (Blueprint $table) {
$table->id(); // Cria uma chave primária do tipo bigint com auto-incremento.
$table->string('code')->unique(); // Coluna 'code', uma string única, usada para identificar o produto.
$table->string('name'); // Nome do produto.
$table->integer('quantity'); // Quantidade do produto em stock.
$table->decimal('price', 8, 2); // Preço do produto com até 8 dígitos no total e 2 casas decimais.
$table->text('description')->nullable(); // Descrição opcional do produto.
$table->timestamps(); // Cria duas colunas: 'created_at' e 'updated_at'.
});
Alterar a estrutura da tabela
Como adicionar dois novos campos: category
e supplier_id
.
Para adicionar novos campos à tabela produtos
, podemos atualizar diretamente o ficheiro de migração, se ainda não tivermos executado as migrações. Caso contrário, teremos que criar uma nova migração para atualizar a tabela existente.
Atualização do Ficheiro de Migração Inicial
Se ainda não executou as migrações, pode simplesmente adicionar os novos campos no ficheiro de migração existente.
Schema::create('produtos', function (Blueprint $table) {
$table->id();
$table->string('code')->unique();
$table->string('name');
$table->integer('quantity');
$table->decimal('price', 8, 2);
$table->text('description')->nullable();
$table->string('category');
$table->unsignedBigInteger('supplier_id');
$table->timestamps();
$table->foreign('supplier_id')->references('id')->on('suppliers');
});
Criação de uma Nova Migração
Se já tiver executado as migrações anteriores, deve criar uma nova migração para atualizar a tabela produtos
. Para criar uma nova migração, execute o seguinte comando:
php artisan make:migration add_category_and_supplier_id_to_products_table --table=produtos
Este comando cria um novo ficheiro de migração. Abra o ficheiro recém-criado e adicione o seguinte código:
public function up()
{
Schema::table('produtos', function (Blueprint $table) {
$table->string('category')->after('description');
$table->unsignedBigInteger('supplier_id')->after('category');
$table->foreign('supplier_id')->references('id')->on('suppliers');
});
}
public function down()
{
Schema::table('produtos', function (Blueprint $table) {
$table->dropColumn('category');
$table->dropForeign(['supplier_id']);
$table->dropColumn('supplier_id');
});
}
Resumo
Neste capítulo, aprendemos a como atualizar o ficheiro das migrações no Laravel, adicionando dois novos campos à tabela produtos
. Esta prática é essencial para a manutenção e evolução das bases de dados de qualquer aplicação web.