Configuración SQLite y API productos Laravel

Clase 3 de 33Curso Avanzado de Laravel

Contenido del curso

Laravel y Base de Datos

    Resumen

    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.