POLITICA DE COOKIES

Q2BSTUDIO.COM utiliza cookies técnicas, analíticas, de sesión y de publicidad con la finalidad de prestar un mejor servicio. No obstante, necesitamos su consentimiento explícito para poder utilizarlas. Así mismo puede cambiar la configuración de las cookies u obtener más información aquí .

Ataque a las consultas desordenadas: auge del generador de consultas

Ataque a las consultas desordenadas: auge del generador de consultas

Publicado el 01/09/2025

Antes construía un portal de empleo donde la página de búsqueda solo tenía unos pocos filtros: título del puesto, ubicación y salario. Todo vivía en el controlador y funcionaba bien, hasta que el equipo de producto añadió más y más filtros. El controlador se volvió enorme, lleno de if por todas partes, superando fácilmente las doscientas líneas. El mantenimiento se hizo costoso y probar la lógica de filtrado era un dolor.

La solución fue separar responsabilidades y abrazar el poder del Eloquent Query Builder de Laravel creando un builder personalizado. En lugar de amontonar condiciones en el controlador, encapsulamos cada filtro en métodos expresivos como withKeyword, withLocation, withSalaryRange, withJobType, withExperienceLevel o withIndustry, y un método orquestador withFilters que compone todos los anteriores según los parámetros recibidos.

El patrón es sencillo: definimos una clase JobAdvertisementBuilder que extiende Builder y añade estos métodos de filtrado encadenables. Cada método valida su entrada y, si corresponde, aplica el where adecuado. Por ejemplo, withKeyword busca en título y descripción, withLocation entiende la palabra remota y filtra por is_remote, y withSalaryRange aplica mínimos y máximos solo cuando existen. Así evitamos lógica dispersa y garantizamos que cada filtro sea independiente y testeable.

Para que el modelo use nuestro builder, sobreescribimos en el modelo el método newEloquentBuilder y devolvemos una instancia de JobAdvertisementBuilder. Con eso obtenemos todas las ventajas del builder original de Laravel y nuestras extensiones, sin perder ninguna funcionalidad base ni la posibilidad de encadenar where, orWhere, with y paginate.

El controlador queda limpio y fácil de leer. En lugar de decenas de condicionales, basta con llamar a JobAdvertisement con withFilters y paginar. Si en algún caso se requiere algo más específico, también se puede invocar un método dedicado, por ejemplo withLocation, y seguir componiendo. El código resulta predecible, fácil de mantener y mucho más simple de probar con unit tests que aíslen cada método del builder.

Además de claridad, se gana en reusabilidad: los mismos métodos de filtrado pueden emplearse en servicios de dominio, comandos o trabajos en segundo plano. La composición fluida permite añadir nuevos filtros sin tocar el controlador y sin riesgo de efectos colaterales. Este enfoque encaja con principios de responsabilidad única y con el Builder Pattern, y en algunos casos puede convivir con scopes locales si ya existen, ofreciendo autocompletado más rico en el IDE y una superficie coherente para todo el equipo.

Consejos prácticos para escalar sin sorpresas: aplica solo filtros cuando la entrada exista, pagina siempre, añade índices a las columnas más filtradas, usa cargas ansiosas con with para evitar el problema N más 1 y documenta brevemente cada método del builder para que su intención sea cristalina.

En Q2BSTUDIO ayudamos a equipos a llevar estas buenas prácticas de arquitectura a sus plataformas con desarrollo de software a medida y aplicaciones a medida, conectando backends robustos con frontends modernos y automatizaciones de negocio. Si buscas un partner para construir o modernizar tu plataforma, descubre nuestro enfoque en desarrollo de software y aplicaciones a medida y cómo integramos pipelines de calidad, pruebas automatizadas y despliegues continuos.

Vamos más allá del código. Somos especialistas en inteligencia artificial e IA para empresas, diseño e implementación de agentes IA, ciberseguridad y pentesting, servicios cloud AWS y Azure, y servicios de inteligencia de negocio con Power BI. Integramos modelos de IA en flujos de datos, reforzamos la seguridad desde el diseño y habilitamos analítica accionable con dashboards y KPIs. Si quieres automatizar procesos y reducir deuda técnica mientras elevas la calidad de tus entregables, conoce nuestras capacidades de orquestación y RPA en automatización de procesos.

Conclusión práctica: si tu controlador ha crecido sin control, mueve la lógica de filtrado a un builder Eloquent personalizado. Obtendrás un código más limpio, testeable y extensible, con una base sólida para seguir escalando. Y si quieres acelerar el viaje con un equipo experto en software a medida, inteligencia artificial, ciberseguridad, servicios cloud AWS y Azure, servicios de inteligencia de negocio y Power BI, Q2BSTUDIO es tu aliado para llevar tus consultas y tu arquitectura al siguiente nivel.

Fin del artículo, inicio de la diversión
Construyendo software juntos

Dando vida a tus ideas desde 2008

Diseñamos aplicaciones móviles y de escritorio innovadoras que cumplen con tus requisitos específicos y mejoran la eficiencia operativa.
Más info
Cuéntanos tu visión
Sea cual sea el alcance, podemos convertir tu idea en realidad. Envíanosla y charlemos sobre tu proyecto o una colaboración futura.
Contáctanos
artículos destacados
Live Chat
Enviado correctamente.

Gracias por confiar en Q2BStudio