Imagen de perfil

No hagas mal uso de Eloquent

He desarrollado muchos proyectos con Laravel y en cada uno de ellos siempre aprendo cosas nuevas. 

Una de las tareas en las que invierto más tiempo en cualquier proyecto es en el trabajo con Eloquent, el ORM de Laravel. Ya sabemos que es tremendamente potente, que hace todo el trabajo sucio a nivel de base de datos por nosotros y que sin él la vida sería muy dura, pero no por eso debemos pasarle a Eloquent toda la responsabilidad, eso es un gran error.

Para desarrollar cualquier proyecto siempre utilizo laravel-debugbar, te lo recomiendo al 100%, más aún si necesitas manejar consultas con muchas relaciones en base de datos, te ayudará a optimizar este proceso.

En este tutorial vamos a ver cómo no hacer mal uso de Eloquent al momento de acceder a los datos, si no lo hacemos bien nuestra aplicación, además de tardar más también consumirá más recursos.

Utiliza siempre la carga dinámica

Eloquent nos ofrece algo que se conoce como carga dinámica, y es tener la posibilidad de cargar datos relacionados en nuestros modelos de forma sencilla utilizando los métodos with y load.

La carga dinámica siempre debe ser utilizada en Eloquent ya que lo que hace es optimizar nuestras consultas para evitar consultas duplicadas, en lugar de ello hace uso de sentencias join, whereIn, case etcétera, todo ello con la meta de obtener tantos datos como necesitemos y siempre de la forma más óptima.

A continuación tienes un ejemplo de mal uso y otro de buen uso al utilizar la carga dinámica de Eloquent.

Optimiza las consultas select con Eloquent

Imagina que tienes una tabla posts y users útil para sacar los datos del post y el usuario que creó cada post. Para sacar esos datos muchos desarrolladores harían lo siguiente:

Es cierto que eso retornará la información de forma correcta, todos los posts y cada uno de ellos con el usuario correspondiente. El problema es que estás obteniendo más información de la que necesitas, la forma óptima de hacerlo sería la siguiente:

Carga automática con los modelos Eloquent

Aunque hasta ahora hemos visto que podemos cargar las relaciones utilizando el método with de Eloquent al momento de realizar las consultas desde los controladores, también podemos automatizar ese proceso pasando la responsabilidad al modelo de la siguiente forma:

Eso hará el trabajo de forma automática, pero a mi personalmente no me gusta, porque no siempre será necesario cargar el autor de un post, así que aunque es bueno saber que existe la propiedad with en los modelos de Eloquent, yo la desaconsejo en base a mi experiencia.

Aunque es cierto que podríamos estar hablando mucho tiempo sobre posibles optimizaciones, la gran mayoría para cualquier desarrollo están cubiertas en los cursos de Laravel de la plataforma, así que te invito a que formes parte de ella.

12 junio, 2019
Cursosdesarrolloweb ©. Todos los derechos reservados.

Login

Create an Account Back to login/register