Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

217
Vistas
Laravel y php mejor método de búsqueda múltiple

Tengo un controlador que obtiene las cuatro entradas de un formulario de búsqueda.

Código SearchController.php

 public function results(Request $request) { $text = $request -> text; $pet = $request -> pet; $category = $request -> category; $city = $request -> city; $searchArray = []; if(empty($text) && empty($pet) && empty($category) && empty($city)) { Session::flash('danger', "You didn't select any search any search."); return redirect() -> back(); } //SEARCH CODE HERE }

lo que estoy tratando de hacer

Estoy tratando de buscar 4 columnas en mi base de datos.

El problema es

También necesito buscar las 4 columnas en una consulta.

Eso significa que necesito verificar si la variable $text no está vacía y si la variable $pet no está vacía, entonces tengo que hacer esta consulta:

 if(!empty($text) && !empty($pet)) $result = Post::where('text', 'like', '%'.$text.'%') -> where('text', $pet) -> get();

Este método funcionará bien, pero tendré varias declaraciones if que verificarán todas las posibilidades.

¿Existe una solución más rápida y óptima?

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Opción 1

Cree la lógica manualmente. Esta es la mejor manera en muchas situaciones. Un ejemplo:

 $result = Post::query(); if (!empty($text)) { $result = $result->where('text', 'like', '%'.$text.'%'); } if (!empty($pet)) { $result = $result->where('pet', $pet); } if (!empty($category)) { $result = $result->where('category', $category); } if (!empty($city)) { $result = $result->where('city', 'like', '%'.$city.'%'); } $result = $result->get();

opcion 2

Utiliza cláusulas condicionales . Ejemplo:

 Post::when($text, function ($q) use ($text) { return $q->where('text', 'like', '%'.$text.'%'); }) ->when($pet, function ($q) use ($pet) { return $q->where('pet', $pet); }) ->when($category, function ($q) use ($category) { return $q->where('category', $category); }) ->when($city, function ($q) use ($city) { return $q->where('city', 'like', '%'.$city.'%'); }) ->get();
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda