Jose Carlos Florez Vergara
esta instrucción es valida para las llaves foraneas
$table->foreignIdFor(Category::class)->constrained()->onDelete('cascade');
Eduardo Pajarito
En mi opinión es mas fácil de manejar :)
¿Cómo defines la estructura inicial de datos cuando construyes una API con Laravel? Aquí aprendes a crear migraciones, modelos y factories para montar las tablas base de un proyecto, con relaciones uno a muchos y muchos a muchos. Es contenido ideal para desarrolladores backend que quieren aplicar buenas prácticas sin importar el framework.
Todo arranca desde el terminal de Visual Studio Code, porque sin una base de datos y tablas bien pensadas no hay nada que practicar. Antes de escribir una sola línea, conviene verificar las versiones de las herramientas, y aquí viene lo interesante: Laravel es tan flexible que puedes usar otra tecnología de base de datos sin problema.
Qué versiones necesitas para seguir el proyecto
El entorno de trabajo usa versiones específicas que puedes igualar o superar sin complicaciones. La recomendación es mantenerte cerca de estas referencias para evitar incompatibilidades.
mariadb -v [01:10].La instalación del proyecto se hace desde la carpeta de sitios con el comando laravel new laravel-api [01:40]. A partir de ahí, todo el trabajo ocurre en el terminal y en dos carpetas clave: la de migraciones y la de modelos.
¿Qué es una migración en Laravel? Es un archivo donde defines la estructura inicial de tus tablas usando código PHP. Cada migración describe campos, tipos de datos y relaciones que luego se traducen en tablas reales de tu base de datos.
Cómo generar modelos, migraciones y factories con un solo comando
Laravel incluye el comando php artisan que muestra todos los comandos disponibles. El protagonista aquí es la familia make, que permite crear archivos base rápidamente.
Para crear la entidad de categoría junto con su migración y su factory, se usa php artisan make:model con opciones adicionales [03:18]. Con un solo comando se generan tres archivos:
Qué campos lleva cada tabla del proyecto
La estructura de datos del curso parte de una lógica clara: una categoría tiene muchas recetas, y una receta puede tener muchas etiquetas. Esto define las dos relaciones centrales del proyecto.
La migración de categorías ya incluye por defecto el id, la fecha de creación y la de actualización. Solo necesitas agregar un campo adicional del tipo string llamado name [05:10]. La tabla de etiquetas usa exactamente la misma estructura.
La tabla de recetas es la más completa. Sus campos son:
category_id del tipo entero sin signo, con relación foránea a categories [05:55].user_id con relación foránea a users, para registrar quién creó la receta [07:00].title del tipo string [07:30].description del tipo text [07:40].ingredients, instruction e image, siendo la imagen un campo opcional [08:05].¿Qué hace un efecto en cascada en una relación foránea? Significa que al eliminar un registro padre, sus registros relacionados también se eliminan. Si borras un usuario, todas sus recetas desaparecen automáticamente con
onDelete cascade.
Cómo defines la relación muchos a muchos entre recetas y etiquetas
Las relaciones uno a muchos ya quedan cubiertas: un usuario tiene muchas recetas y una categoría tiene muchas recetas. Para la relación muchos a muchos necesitas una tabla intermedia o pivote.
Esta tabla se crea con php artisan make:migration apuntando a la unión de recetas y etiquetas [09:15]. Y aquí hay un detalle de convención que marca la diferencia entre un proyecto ordenado y uno confuso.
Por qué el nombre de la tabla pivote va en singular y orden alfabético
El estándar de Laravel pide que el nombre de la tabla intermedia combine los nombres de las tablas relacionadas en singular y en orden alfabético [09:40]. Mientras las tablas normales como categories o recipes van en plural, la tabla pivote sigue esta regla distinta.
Dentro de esta tabla intermedia solo guardas dos campos:
id de la receta con su relación foránea.id de la etiqueta con su relación foránea.Un detalle práctico: en esta tabla muchos a muchos se eliminan las columnas de fecha con timestamps, porque no aportan valor en una relación pivote [10:50]. Las tablas principales sí mantienen esa línea para registrar creación y actualización automáticamente.
El resultado son cuatro migraciones que forman la columna vertebral del proyecto: categorías, recetas, etiquetas y la tabla que une recetas con etiquetas. Con esto queda lista la base para una API profesional.
Ahora te toca a ti. Realiza esta práctica y cuéntame en los comentarios si estás trabajando con otro framework, porque cualquier herramienta profesional comparte esta misma lógica de estructura de datos.
Jose Carlos Florez Vergara
esta instrucción es valida para las llaves foraneas
$table->foreignIdFor(Category::class)->constrained()->onDelete('cascade');
Eduardo Pajarito
En mi opinión es mas fácil de manejar :)
Johan Camilo Lozano Ramirez
Para aquellos que al instalar Laravel les trae una versión mas reciente pueden crear el proyecto con la versión especifica que usa el profe (10.2.4)
composer create-project --prefer-dist laravel/laravel:10.2.4 laravel-api
Steven García
No entiendo esta clase. si alguien me puede apoyar, no me queda claro cuales son los conceptos que esta explicando. y en todo la clase me dio la impresion de solo estar codeando contruyendo la api.
Iván González Mendoza
En la sección de recursos hay un enlace para ver el código del proyecto que esta utilizando. Aquí no hay tanto una explicación de conceptos de convenciones de creación de API, sino más bien la construcción de un ejemplo con el que, más adelante, se demostrará como deben aplicarse los principios que se demostrarán en el curso.
Juan Manuel Ortiz Suárez
Puedo desarrollar el curso con FastAPI de Python?
Kenneth Angulo L
Comparto por aqui las diferentes opciones que tenemos para crear las llaves foraneas (ninguna es mejor que otra, solamente debemos apegarnos a un estandar cuando desarrollemos y ser consistentes)
Alvaro Huaysara Jauregui
Así se haría la petición en dart
import 'dart:async'; import 'package:http/http.dart' as http; Future<void> main() async { // URL de la API XKCD var url = Uri.parse('https://xkcd.com/info.0.json'); // Realizar la petición GET var response = await http.get(url); // Verificar si la petición fue exitosa (código de estado 200) if (response.statusCode == 200) { // Imprimir la respuesta print('Respuesta de la API XKCD:'); print(response.body); } else { // Si la petición falla, imprimir el código de estado print('Error al realizar la petición: ${response.statusCode}'); } }
Juan Pablo Campuzano Monsalve
Excelente, no conocía este lenguaje de programación hasta leer tu comentario jajajja
GERARDO JOSE VILLEDA ERAZO
php artisan make:migration create_recipe_tag_table
Kenneth Angulo L
Las clases de Italo son asi, muy bien estructuradas, aqui estamos reuniendo los recursos (modelos, tablas) con los que vamos a trabajar en el proyecto.
Tengo dudas sobre el borrado en cascada con las categorias, porque si elimino la categoria elimino tambien todas las recetas que tenga asociadas, en terminos de UX pienso es mejor advertir al usuario 'x cantidad de recetas quedaran huerfanas, o algo asi'.
Dicho eso, comparto mi version de la migracion :
Schema::create('recipes', function (Blueprint $table) {
$table->id();
$table->foreignIdFor('category_id')->constrained();
$table->foreignIdFor('user_id')->constrained()->onDelete('cascade');
$table->string('title');
$table->text('description');
$table->text('ingredients');
$table->text('instructions');
$table->string('image')->nullable();
$table->timestamps();
});
Esteban Xavier Moyolema Paz
Qué bueno un profe serio, no como el muchachito de la clase anterior!
William Villegas
antes de andar hablando deberías ver sus cursos primero para que te des cuenta que es muy buen profesor al igual que italo
Jorge Luis Callalle Torres
Buenas, requieren que haya instalado Laravel? para el Curso
Axel Isaac
Puedes instalar Laravel si lo deseas, pero la orientacion del curso va mas a aprender las bases del desarrollo Backend, los cuales pueden aplicarse en cualquier tipo de framework o lenguaje de programacion.
Juan Sebastián Joya Rodríguez
Es preferible que lo instales, igual en el curso de laravel tel lo enseñan a hacer de forma sencilla
Carlos Palacios
Dejo mi codigo en JavaScript usando express.js --> https://github.com/CarlosArgelio/javascript-api/commit/2ecf136ad20774f488c6b2aa16bf35dc16598983
Ivan Sosa Tovar
Comparto Descargar Composer-Setup.exe: Visita el sitio web oficial de Composer (https://getcomposer.org/download/) y descarga el instalador de Composer llamado "Composer-Setup.exe". Este instalador simplificará el proceso de instalación de Composer en Windows. para instalar Laravel y crear el proyecto con laravel composer create-project --prefer-dist laravel/laravel nombre-del-proyecto