No Laravel, a combinação entre Models e Migrations forma a base de qualquer aplicação bem estruturada. Eles garantem uma separação clara entre a lógica de negócio e a estrutura do banco de dados, além de oferecer um versionamento confiável para qualquer alteração.
Se você quer desenvolver sistemas robustos e escaláveis com Laravel, entender esses dois pilares é essencial.
🔎 O que são Models e Migrations no Laravel
Models
Um Model representa uma entidade da aplicação — como User, Product, Post. Ele se conecta a uma tabela do banco de dados e interage com os dados usando o Eloquent ORM.
Exemplo: O model User manipula os dados da tabela users.
Migrations
As Migrations são arquivos PHP que descrevem a estrutura das tabelas do banco de dados. Elas são como “migradores de esquema”, que permitem evoluir a estrutura do banco com segurança e controle de versão.
Como criar um Model com Migration integrada
Para criar um model com sua respectiva migration de forma automática, basta usar o Artisan:
php artisan make:model Product -m
Esse comando cria:
- Product.php dentro de app/Models
- create_products_table.php em database/migrations
Como escrever sua primeira migration
Exemplo básico de migration para a tabela products:
Schema::create('products', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->decimal('price', 8, 2);
$table->timestamps();
});
Comandos úteis:
- php artisan migrate → executa todas as migrations pendentes
- php artisan migrate:rollback → desfaz a última execução
- php artisan migrate:fresh → recria todo o banco a partir do zero
Mantendo controle com rollback e refresh
O Laravel permite voltar versões do banco com um simples comando, ideal para testes e correções:
php artisan migrate:rollback
Você também pode limpar e recriar com:
php artisan migrate:fresh --seed
Boas práticas ao definir Models e Migrations
Nomeclatura padrão
- Use nomes no singular para Models (Product)
- Tabelas no plural (products)
- Use snake_case para nomes de colunas
Use $fillable no Model:
protected $fillable = ['name', 'price'];
Evite usar $guarded = [] indiscriminadamente para proteger sua aplicação contra Mass Assignment.
Relacionamentos bem definidos:
public function category() {
return $this->belongsTo(Category::class);
}
public function products() {
return $this->hasMany(Product::class);
}
Automatizando com Seeders e Factories
Seeders e Factories ajudam a popular o banco com dados de teste de forma automatizada.
Criando uma Factory:
php artisan make:factory ProductFactory --model=Product
Criando um Seeder:
php artisan make:seeder ProductSeeder
No seeder:
Product::factory()->count(10)->create();
Rode tudo com:
php artisan db:seed
Entender Models, Migrations e o Eloquent ORM é o primeiro passo para se tornar um desenvolvedor Laravel completo. A clareza na modelagem de dados e o controle de versão trazido pelas migrations transformam a maneira como construímos aplicações escaláveis e profissionais.
Comece agora a construir sua aplicação Laravel com uma estrutura de dados sólida! Já aplicou essas práticas no seu projeto? Comente abaixo sua experiência ou envie dúvidas — vamos evoluir juntos! 🚀