Levanta rápido una API de productos en Laravel usando SQLite, migraciones, TDD, Faker, model factories y seeders. Sin servidores extra ni configuraciones complejas: configura la base de datos, genera datos de prueba y valida con tests automatizados. Ideal para un flujo ágil y confiable.
¿Cómo configurar SQLite en Laravel sin servidor?
Configurar una base transaccional liviana con SQLite evita instalar y levantar servicios. Laravel trae el driver listo y se activa con unos ajustes mínimos.
¿Qué cambiar en .env y en config database.php?
Crear el archivo de base: database/database.sqlite.
En .env, ajustar la conexión: DB_CONNECTION=sqlite.
Si existe DB_DATABASE, borrarla para usar el archivo por defecto.
Confirmar en config/database.php: el driver sqlite usa database/database.sqlite si no hay DB_DATABASE.
¿Cómo ejecutar migraciones con php artisan migrate?
Bajar el servidor, luego correr migraciones.
php artisan migrate
Si aparece que la BD no existe: eliminar DB_DATABASE en .env y repetir el comando.
Ver tablas creadas con el cliente de PHPStorm: Tools > Database, elegir SQLite y abrir database/database.sqlite. Probar conexión: debe decir que está OK.
¿Cómo generar datos de prueba con Faker, factories y seeders?
Para trabajar la API, se requieren registros confiables y repetibles. Aquí entran Faker, model factories y seeders.
¿Qué hace un model factory con Faker?
Un factory define cómo generar datos falsos realistas.
En database/factories, ajustar el factory de producto:
nombre: con Faker, un nombre al azar.
precio: un número entre diez mil y sesenta mil.
Resultado: valores aleatorios coherentes para pruebas.
¿Cómo se ejecuta un seeder para poblar la base?
En ProductSeeder, usar el factory del modelo para crear N registros y create para insertarlos.
En DatabaseSeeder, llamar a ProductSeeder para centralizar su ejecución.
Poblar la base de datos:
php artisan db seed
Se puede correr varias veces para generar más productos. Verificar en el cliente de base que se inserten registros aleatorios.
¿Cómo construir y probar la API de productos con TDD?
La técnica TDD guía el desarrollo: primero fallan los tests, luego se implementa lo mínimo para hacerlos pasar. Así se asegura funcionalidad y cobertura desde el inicio.
¿Qué crear con make model y controlador API?
Al fallar por “no existe la clase producto”, generar el modelo:
php artisan make model product
Además, incluir controlador de tipo API y todos los artefactos necesarios con la flag de “all”: migración, factory, seeder y controlador.
En la nueva migración, definir columnas de products como nombre (string) y precio (float); luego migrar para crear la tabla.
¿Cómo funcionan index, store, show, update y destroy?
index: listar todos los productos con Eloquent y retornarlos.
store: crear con Product::create(...) usando los atributos de la petición.
show: gracias a la inyección de dependencias, recibe el modelo y lo retorna.
update: actualizar el recurso con update(...) desde la petición.
destroy: eliminar el producto y responder en JSON con 200.
Asignación masiva: en el modelo Product, declarar protected $guarded = []; para permitir crear/actualizar con cualquier atributo permitido.
¿Cómo declarar rutas y verificar con row list?
En routes/api.php, definir una ruta tipo recurso con la URI products apuntando al controlador.
Listar rutas registradas:
php artisan row:list
Tests de integración: crear 5 productos, llamar la ruta y verificar que la cantidad devuelta coincida. Al ejecutar todos, se reportan 5 tests y 10 assertions, lo que confirma la configuración.
Habilidades y conceptos reforzados en este flujo:
Configuración de SQLite en Laravel sin servidor adicional.
Manejo de variables de entorno en .env para la conexión de BD.
Migraciones para versionar esquemas.
Generación de datos con Faker vía model factories y seeders.
Diseño de API REST con controlador de recursos.
Asignación masiva y uso de $guarded.
Inyección de dependencias en métodos del controlador.
Pruebas de integración con TDD para endpoints.
Ruteo de recursos y consulta de rutas con comandos de Artisan.
¿Te animas a replicarlo con un modelo Category? Crea su model, factory, seeder, migration y su endpoint para crear y listar categorías. Cuéntame en comentarios cómo te fue y qué dudas te surgieron.