¿Qué es Laravel Eloquent ORM y Query Builder?


Guadalupe

17 Apr 2023

Cada vez hay más cursos de Laravel, pues este framework es muy útil para los desarrolladores. Una aplicación web siempre necesita interactuar con una base de datos y Laravel hace esta tarea sin problemas. Algunas de las herramientas que hacen de Laravel un framework impresionante es la inclusión de "Query Builder y Eloquent ORM".

Entonces, ¿sabes qué es Laravel Eloquent y Query Builder? En este artículo, te explicaremos más acerca de este tema y te compartiremos algunos consejos rápidos sobre estos conceptos. ¡Comencemos!

¿Qué es Query Builder?

En Laravel, el Query Builder proporciona una interfaz sencilla para crear y ejecutar consultas de base de datos. Esta herramienta se puede utilizar para realizar todas las operaciones de base de datos en tu aplicación, desde la conexión básica DB, CRUD, agregados, etc y funciona en todos los sistemas de bases de datos soportados como un campeón.

El factor notable sobre el Query Builder es que, ya que utiliza los Objetos de Datos PHP (PDO), no tenemos que preocuparnos por los ataques de inyección SQL (Asegúrate de que no eliminas inadvertidamente esta protección).

Asimismo, podemos evitar todas esas líneas de código para sanear los datos antes de alimentarlos a la base de datos. Entonces, ¿cómo creamos una simple consulta select para obtener todos los valores de la tabla de usuarios?

$users = DB::table('users')->get();

DB::table es responsable de iniciar una consulta fluida contra una tabla de la base de datos. La tabla de la que hay que seleccionar el valor se menciona dentro de los paréntesis entre comillas y finalmente el método get() obtiene los valores. De forma similar, para obtener una única fila podemos modificar el código anterior añadiendo una cláusula where:

$user = DB::table('users')->where('name', 'John')->first();

En este caso, estamos intentando obtener una fila que tenga el valor John en la columna nombre. El método first() solo devolverá el primer resultado. ¿Y si solo necesitamos el identificador de usuario de John? En lugar de devolver toda la matriz de resultados, ¿podríamos simplemente extraer esa columna específica?

$user_id = DB::table('users')->where('name', 'John')->pluck('id');

Para especificar más de una columna podemos utilizar la cláusula select:

$users = DB::table('users')->select('name', 'email')->get();

A menudo se escriben consultas en función de determinadas "condiciones where". Entonces, ¿cómo cómo obtener la lista de usuarios cuyo user_id es menor que 10? Para ello, se divide el operador y los operandos en tres parámetros y se introducen en las condiciones where:

$users = DB::table('users')->where(id, '<', 10)->get();

Ahora tenemos una situación, necesitamos obtener todos aquellos usuarios cuyo user_id esté entre 10 y 20:

$users = DB::table('users')->whereBetween('id', array(10, 20))->get()

Laravel tiene los métodos whereBetween(), whereNotBetween(), wherein() y whereNotIn() a los que se puede pasar valores como un array. Pero, ¿por qué se pasan valores como un array y no como parámetros separados por comas?

Digamos que los valores 10 y 20 se toman como entradas del usuario. Como programadores, no podemos confiar en lo que el usuario escribe en el campo de entrada. Puede ser un usuario válido que introduzca valores correctos o alguien que intente introducir valores falsos y colapsar tu base de datos.

$users = DB::table('users')->whereBetween('id', array($from, $to))->get()

Aquí $from y $to son entradas del usuario. Si nos fijamos en la clase de conexión de base de datos de Laravel para el método select() esta matriz se envuelve alrededor de la conexión PDO y es responsable de limpiar los datos antes de que se ejecute la consulta. ¡Así tenemos consultas limpias!

¿Qué es Eloquent?

El ORM (Mapeador Relacional de Objetos) incluido en Laravel se llama Eloquent y nos permite trabajar con los objetos y relaciones de la base de datos utilizando una sintaxis expresiva. Es similar a trabajar con objetos en PHP.

En Laravel, cada tabla de la base de datos tiene su correspondiente "Modelo". Eloquent ORM proporciona la implementación Active Record, lo que significa que cada modelo que creamos en nuestra estructura MVC se corresponde con una tabla de nuestra base de datos. Crear un modelo Eloquent es similar a crear una clase. Todos los archivos del modelo deben estar en la carpeta app/models.

class Grupo extends Eloquent { }

Todos los modelos Eloquent se extienden a partir de la clase Eloquent. El nombre en minúsculas y plural de la clase se utilizará como nombre de la tabla a menos que se especifique explícitamente otro nombre. Eloquent también asumirá que cada tabla tiene una columna de clave primaria llamada "id" a menos que se especifique. Podemos especificar una tabla de la siguiente manera:

class Group extends Eloquent

{

protected $table = 'group_list';   // will point to group_list table if mentioned

}

Aquí, el modelo de grupos corresponderá a la tabla de grupos (por defecto). Podemos acceder a los datos de la tabla groups usando las operaciones CRUD básicas. Por defecto los modelos de Eloquent tendrán claves auto-incrementadas.

Crear:

$new_group = new Group;
$new_group->name = 'NewGroup';
$new_group->description = 'Awesome Group';
$new_group->save();
<read:< pre="">

Para obtener todos los grupos, puedes usar: 

Grupo::all();

Mientras que para encontrar un grupo pasando el id de grupo etc, puedes usar:

Grupo::encontrar($id);

¡Hemos llegado al final! Ahora ya sabes más sobre el constructor de consultas de Laravel y de cómo hace que nuestra interacción con la base de datos sea más sencilla. Asimismo, aprendimos qué es Eloquent ORM, cómo crear un modelo y algunos ejemplos rápidos sobre las operaciones CRUD. ¡Esperamos que esta información te beneficie y ayude a empezar!

¿Te gustaría aprender a programar? En Coders Free contamos con diversos cursos online con todos los niveles de programación, así como servicios de diseño gráfico para hacer crecer tu negocio. ¡Contáctanos para obtener más información!


0 comentarios

Inicia sesión para comentar