Manejo de Bases de Datos con Eloquent en Laravel

Clase 10 de 31Curso de Introducción a Laravel 9

Contenido del curso

Fundamentos de Laravel

Manos a la obra con nuestro proyecto

Trabajemos en el diseño web de nuestro proyecto

Resumen

Trabajar con bases de datos en Laravel se simplifica enormemente gracias a Eloquent, el ORM integrado que permite consultar, filtrar y paginar registros usando sintaxis de PHP en lugar de sentencias SQL. A continuación se desglosan los pasos clave para conectar vistas con datos reales almacenados en la base de datos.

¿Qué es Eloquent y por qué reemplaza al SQL tradicional?

Eloquent es la implementación del patrón ORM (Object-Relational Mapping) dentro de Laravel [01:00]. Su propósito es representar cada tabla de la base de datos como un modelo de PHP, de modo que los registros se manipulan como objetos en lugar de escribir consultas SQL manuales.

  • Cada tabla tiene un archivo modelo correspondiente dentro de app/Models.
  • El namespace de estos modelos es App\Models.
  • Al importar el modelo en el controlador, se accede a métodos como all(), first(), find() y paginate().

Por ejemplo, para obtener todas las publicaciones basta con escribir Post::all() [02:08]. Laravel traduce esa instrucción al SQL necesario de forma transparente, lo que reduce errores y acelera el desarrollo.

¿Cómo se integran los modelos con el ciclo ruta-controlador-vista?

El flujo en Laravel sigue un orden claro: ruta → controlador → vista [01:22]. Toda la lógica de consulta debe residir en el controlador, nunca directamente en la ruta ni en la vista.

¿Cómo se importa y usa el modelo Post?

Dentro del controlador se importa el modelo con use App\Models\Post;. A partir de ahí se pueden reemplazar los datos falsos por consultas reales [01:40].

php use App\Models\Post;

public function index() { $posts = Post::all(); return view('blog', compact('posts')); }

En la vista, los datos dejan de tratarse como arrays y pasan a utilizarse con notación de objeto: $post->title, $post->content [03:20]. Este cambio refleja la naturaleza del ORM, donde cada registro es una instancia del modelo.

¿Qué métodos básicos ofrece Eloquent para consultar registros?

Eloquent proporciona varios métodos según la necesidad [04:06]:

  • Post::first() — devuelve el primer registro de la tabla.
  • Post::find(25) — busca un registro por su ID, en este ejemplo el número veinticinco.
  • Post::all() — retorna una colección con todos los registros.

La diferencia fundamental es que first() y find() devuelven un único objeto, mientras que all() devuelve una colección de datos iterable [06:10].

¿Cómo se implementa la paginación con orden descendente?

Para mostrar registros paginados y ordenados cronológicamente se encadena latest() con paginate() [04:50]:

php $posts = Post::latest()->paginate(15);

  • latest() ordena los resultados de forma descendente por fecha, asegurando que las publicaciones más recientes aparezcan primero.
  • paginate(15) divide los resultados en páginas de quince registros cada una.

En la vista, después del @foreach, se imprimen los enlaces de paginación con una sola línea [05:16]:

blade {{ $posts->links() }}

Esto genera automáticamente los controles de navegación entre páginas (página dos, página tres, etc.) sin configuración adicional [05:30].

¿Cómo se manejan las publicaciones individuales con route model binding?

Para mostrar una publicación específica, la ruta recibe el slug como parámetro, que es una propiedad del modelo Post [02:45]. Laravel resuelve automáticamente el registro correspondiente y lo inyecta en el controlador:

php public function show(Post $post) { return view('post', compact('post')); }

En la vista individual, el título se coloca dentro de un <h1> y el contenido en un <p>, accediendo directamente a $post->title y $post->content [03:40].

Con estas herramientas el proyecto pasa de mostrar datos estáticos a ser completamente dinámico: se conecta a la base de datos, consulta los registros y los presenta en las vistas con paginación funcional. Si ya probaste estos métodos, comparte en los comentarios qué otros filtros de Eloquent te gustaría aplicar en tus proyectos.