Es el momento para empezar a consultar datos de nuestra base de datos, pero primero veamos cómo implementamos los modelos para empezar a usarlos y operar sobre la información.

Lo primero será crear un controlador, será el encargado de manejar las operaciones que necesitemos en todo lo que se refiera a proyectos (para el caso de nuestro ejemplo del administrador de proyectos). Los controladores son los documentos que se encargan de contener y ejecutar la lógica de la aplicación a nivel de código.

Para crear un controlador solo debemos generar un nuevo archivo dentro del directorio de Controllers, los controladores deben llevar la siguiente estructura:

  1. Lo nombraremos como ProjectController.php, pues hará referencia a solo lo que tiene que ver con proyectos, recuerda que cada controlador debe encargarse de un tema específico y no revolver todo de otras tablas o partes del proyecto en un mismo lugar.
  2. La primera línea contiene el namespace o espacio de nombres que indica donde está ubicado el controlador, en este caso, he creado el controlador dentro de: namespace App\Http\Controllers;.
  3. Debemos hacer un llamado al modelo que será el representante de los proyectos en este controlador, lo haremos agregando: use App\Project;.
  4. Ya pasamos a declarar la clase. Finalmente, nos quedaría la estructura de esta forma:
namespace App\Http\Controllers; use App\Project; class ProjectController { }

Implementando el modelo para traer datos 🔍

Para implementar el modelo y poder listar o traer datos de la tabla projects debemos crear una función y dentro de ella escribir lo que vamos a solicitar. La forma de implementarlo es la siguiente:

Para traer todos los registros de la tabla 📒

Solo hará falta que hagas un llamado al nombre del modelo [Project] con doble dos puntos [::]:

Project::all();

Y básicamente está será la forma como empezarás a traer todo tipo de información a nivel más específico. Veamos otro ejemplo:

$projects = Project::where('is_active', 0) ->orderBy('name', 'asc') ->take(2) ->get();

Aquí estamos solicitando 2 registros de la tabla projects que estén desactivados (con el campo is_active en 0) y ordenados por el campo name en orden ascendente, finalmente, el método get es quien nos trae la información.

Puedes notar que no estamos usando el nombre de la tabla projects directamente en ninguna parte de la consulta y tampoco estamos usando sentencias SQL, estamos usando query builder, otra fantástica herramienta de la cual te hablaré más adelante.

Agregando la función al controlador ➕

Es el momento de pasar este código a nuestro controlador de proyectos y probar qué tal funciona. Para esto declaramos una función que tendrá el código inicial que acabamos de ver para traer todos los registro de la tabla projects y quedaría de esta forma:

public function getAllProjects() { $projects = Project::all(); return $projects; }

Para poder visualizarla hasta este punto crearemos una ruta que nos permita acceder a esta función y ver el resultado que nos retorna.

Creando una ruta para una función en un controlador 🚴🏻‍♀️

Ubica un archivo llamado web.php dentro de la carpeta routes del proyecto de Laravel, allí encontrarás, hasta este momento, la ruta por defecto que nos muestra la ventana de bienvenida al crear el proyecto por default.

Por el momento, solo agregaremos debajo de la ruta por default esta otra ruta que hace referencia a nuestra nueva función en el controlador que creamos:

Route::get('getAllProjects', 'ProjectController@getAllProjects');

Esta ruta se traduce a que solicitamos por el método get un sitio que hemos llamado getAllProjects y referencia al archivo ProjectController, que tiene dentro una función llamada getAllProjects.

Guarda cambios, limpia caché y ejecutemos:

En la consola ejecuta:

  • Para limpiar caché: php artisan cache:clear
  • Ejecutar el servidor del proyecto: php artisan serve

Ve al navegador y escribe en la barra de direcciones:

http://localhost:8000/getAllProjects

Y claro, no muestra nada, pantalla en blanco completamente. ¿Adivinas por qué? ¡Así es! No hay registros en la tabla de proyectos.

Agreguemos un par de registros manualmente a través de la consola de MySQL.

Una vez dentro de la consola de MySQL, recuerda seleccionar la base de datos con: use project_manager;.

Procedemos a agregar un nuevo registro con datos de testing, recuerda que debemos agregar valores a todas las tablas, pues están relacionadas y no podemos solo ingresar en projects porque generaría un error con las llaves foráneas. Luego podremos visualizar que nuestra primera función nos trae lo que necesitamos.

INSERT INTO cities (name) VALUES ('Bogota');

INSERT INTO companies (name) VALUES ('Empresa ABC');

INSERT INTO users (name) VALUES ('Elmo');

INSERT INTO projects (city_id, company_id, user_id, name, execution_date, is_active) VALUES ('1', '1', '1', 'Proyecto de test', '2020-04-30', '1');

Puedes ingresar cuantos registros quieras y, ahora sí, vamos nuevamente al navegador, recargamos la página y ya están todos nuestros registros allí.

Consultar datos Eloquent

Reto 🏁

Ya estás lista/o para empezar a traer datos usando un modelo. Te reto a que crees una nueva función que muestre los últimos diez registros de la tabla projects.

Vamos a la siguiente clase donde aprenderás cómo manejar grandes cantidades de registros sin que se te convierta en un problema de rendimiento para tu aplicación.

Estructura de modelos, rutas y controladores para consultar datos

      Estructura de modelos, rutas y controladores para consultar datos