Un elemento común en una aplicación es que nos toque buscar palabras en una o mas columnas dentro de nuestra base de datos, aquí les muestro una forma de hacerlo que funciona.
Buscando una palabra en varias columnas o en todo un modelo
Lo que haremos es crear una variable query y con el uso “use” y de orWhere, nos compare el contenido de la columna con el valor de la búsqueda.
$busqueda = 'Palabra o termino a encontrar; $descripcion = Descripcion::from('descripcion as a') ->where(function ($query) use ($busqueda) { $query = $query->orWhere('a.titulo','like',"%$busqueda%"); $query = $query->orWhere('a.nombre','like',"%$busqueda%"); $query = $query->orWhere('a.explicacion','like',"%$busqueda%"); $query = $query->orWhere('a.etiquetas','like',"%$busqueda%"); }); $posts = $posts->where('a.estado','=',1) ->get();
Buscando varias palabras en varias columnas del modelo Usuario, solo en aquellos registros que están activos
$columnasbusqueda = ['nombre','apellidos','apodo']; $terminos = 'Palabras a buscar'; $palabras = explode(" ",$ terminos); $usuarios = Usuario::from('usuarios as a') ->where(function ($query) use ($columnasbusqueda,$ palabras) { foreach ($palabras as $palabra) { $query = $query->where(function ($query) use ($columnasbusqueda,$palabra) { foreach ($columnasbusqueda as $columna) { $query->orWhere($columna,'like',"%$palabra%"); } }); } }); $usuarios = $usuarios->where('a.estado','=',1) ->get();
Y listo, esto es todo.
Espero modestamente que este artículo, sirva de ayuda a alguien.
Gracias.
…..lo que realmente importa no es lo que te da la vida, sino lo que haces con ello…