Contenido del curso
Creación del proyecto
Planificación y mantenimiento
- 8

Planificación de rutas REST en Laravel
06:08 min - 9

Recursos y colecciones en Laravel API
12:59 min - 10

Recursos anidados en Laravel API
11:48 min - 11

Cómo reducir 932 consultas con Telescope
10:54 min - 12

CRUD de Recetas con Laravel y Symfony en Visual Studio Code
16:21 min - 13

Validación de Datos en Aplicaciones Web con Laravel
11:24 min
Funciones de seguridad
- 14

Autenticación vs. autorización
03:19 min - 15

Proteger rutas de API con Sanctum
09:27 min - 16

Ruta de login y tokens con Sanctum
12:32 min - 17

Corrección de bugs de seguridad en aplicaciones web
08:02 min - 18

Políticas de acceso en Laravel con Artisan
07:27 min - 19

Upload e validação de imagens em Laravel
07:56 min - 20

Qué es autenticación en la web
03:54 min
API Testing
API Breaking Changes
Conclusiones
Migrações e relações de dados em Laravel
Resumen
Definir a estrutura inicial de dados em Laravel API é o primeiro passo para construir uma base sólida antes de programar endpoints. Aqui vais aprender a criar tabelas, migrações e relações one-to-many e many-to-many aplicando boas práticas que funcionam em qualquer framework profissional.
Que versões e ferramentas precisas para começar?
Antes de gerar o projeto, confirma que o teu ambiente está alinhado com as versões recomendadas. Isto evita conflitos durante a instalação e ao correr migrações.
- Instalador do Laravel atualizado [0:25].
- PHP 8.2.6 ou superior [0:30].
- Composer 2.5.7 ou superior [0:35].
- MariaDB como base de dados, embora o Laravel seja flexível com outras tecnologias [0:42].
O projeto começa com o comando laravel new laravel-api dentro da tua pasta de sites [1:10]. A partir daí, todo o trabalho acontece no terminal integrado do Visual Studio Code.
O que é uma migração no Laravel? É um ficheiro PHP que descreve a estrutura de uma tabela e permite versionar a base de dados. Cada migração pode ser executada ou revertida com um comando.
Como gerar modelos, fábricas e migrações com Artisan?
O comando php artisan make:model é o ponto de partida. Combinado com flags adicionais, cria simultaneamente o modelo, a factory e a migração correspondente, poupando passos manuais [2:30].
Neste projeto, vais criar três entidades centrais:
- Category, que agrupa receitas.
- Recipe, a entidade principal de cozinha.
- Tag, que permite etiquetar receitas com múltiplos elementos.
A decisão de modelar assim responde a uma necessidade clara: uma categoria contém várias receitas (relação one-to-many) e uma receita pode ter várias etiquetas (relação many-to-many) [3:15]. Esta combinação cobre os dois cenários mais comuns em qualquer API real.
Que campos precisa cada tabela?
A migração de categories precisa apenas de um campo name do tipo string além dos campos automáticos id, created_at e updated_at [4:00]. A tabela de tags segue exatamente a mesma estrutura.
A migração de recipes é mais rica porque carrega o peso das relações e do conteúdo:
category_idcomounsignedIntegercom chave estrangeira referenciandocategories.id[4:45].user_idcom chave estrangeira parausers.id, ambos comonDelete cascade[5:30].titledo tipo string.descriptiondo tipo text.ingredientseinstructionspara o conteúdo da receita.imagecomo campo opcional, já que vais carregar imagens via API [6:10].
O efeito cascade garante que, ao eliminar uma categoria ou utilizador, as receitas associadas desaparecem automaticamente. É uma forma de manter a integridade referencial sem registos órfãos.
Como criar a tabela pivot para relações muitos-para-muitos?
Quando duas entidades se relacionam em many-to-many, precisas de uma tabela intermediária chamada pivot. No Laravel existe uma convenção de nomenclatura que deves respeitar para que o framework reconheça a relação automaticamente.
O comando é php artisan make:migration create_recipe_tag_table [7:20]. Repara em dois detalhes da convenção:
- Os nomes das entidades vão no singular, ao contrário das tabelas normais que vão no plural.
- A ordem é alfabética:
recipeantes detag.
Por que a tabela pivot usa nomes no singular? Porque o Laravel infere o nome a partir dos modelos relacionados, que sempre são singulares. Quebrar esta regra obriga-te a configurar a relação manualmente.
Dentro desta migração registas dois campos: recipe_id e tag_id, ambos como chaves estrangeiras com cascade. Os campos created_at e updated_at são eliminados porque numa tabela pivot raramente fazem sentido [8:40].
Por que usar onDelete cascade nas relações?
O cascade propaga a eliminação. Se apagas um utilizador, todas as receitas dele somem. Se apagas uma receita, as ligações na tabela pivot também desaparecem. Sem isto, ficavas com dados inconsistentes a ocupar espaço e a quebrar consultas.
Que conceitos de modelagem deves dominar?
A estrutura criada cobre os fundamentos que vais reencontrar em qualquer framework profissional, seja Django, Rails ou Spring. Os pilares são:
- Migrações versionadas para controlar mudanças no schema.
- Modelos que representam entidades do domínio.
- Factories para gerar dados de teste de forma rápida.
- Chaves estrangeiras com regras de integridade como
cascade. - Tabelas pivot com convenções de nomenclatura claras.
O resultado final são quatro migrações que formam a base do projeto: categories, recipes, tags e recipe_tag. A partir daqui, qualquer endpoint que construas vai apoiar-se nesta fundação.
Pratica este exercício no teu próprio ambiente e conta nos comentários se estás a usar outro framework. A lógica de relações e migrações replica-se em todos eles, só muda a sintaxe.