Modelos limpios con Laravel Eloquent Builders

arrow_back Blog

Mejora la organización y mantén tus modelos limpios utilizando Laravel Eloquent Builders, una poderosa y oculta característica de Laravel Eloquent.

Uno de los problemas con el que nos encontramos cuando trabajamos con modelos en Laravel es que éstos muchas veces crecen de una forma que se hacen difíciles de mantener, entre atributos personalizados, scopes, relaciones, casts, appends, boots, y muchas más características de Laravel Eloquent, terminamos con modelos monstruosos.

En esta entrada, te quiero presentar los Builders de Eloquent, una forma de organizar tus modelos de una forma mucho mejor, como se suele decir, divide y vencerás.

Creando nuestro primer Eloquent Builder

Mi recomendación para empezar a crear tus propios Eloquent Builders es que crees un directorio llamado Builders en el directorio app\Models de tu proyecto Laravel. Es la mejor ubicación para tener una organización de archivos limpia y entendible para gestionar los Builders.

A continuación, te muestro un ejemplo de un Eloquent Builder para un modelo Post:

  • Nuestra clase debe extender de Illuminate\Database\Eloquent\Builder.

  • Podemos extender nuestro modelo sin el prefijo scope, simplemente añade nuevos métodos, mejor semántica.

  • Acceso al modelo Post con $this.

  • Acceso a un modelo concreto con $this->model.

Aplicando nuestro Eloquent Builder al modelo Post

Una vez hemos creado nuestro Eloquent Builder para el modelo Post, debemos informar a dicho modelo para que lo utilice, esto lo conseguimos fácilmente de la siguiente forma:

A partir de este momento ya podemos empezar a utilizar nuestros nuevos métodos fácilmente:

Tutorial Laravel Eloquent Builders en vídeo

Si eres de los que prefieren un vídeo en lugar de un tutorial, te dejo el vídeo que he preparado acerca de los Eloquent Builders, espero que te guste y te resulte útil.

Cursosdesarrolloweb Cursosdesarrolloweb

Cursosdesarrolloweb es una plataforma educativa con cursos y tutoriales en texto y vídeo.

Términos y condiciones Política de privacidad Formulario de contacto

Copyright 2023 © Todos los derechos reservados.

Contacto