Un elemento común en una aplicación es que nos toque buscar una palabra en la base de datos, en Laravel. 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();
Leer mas sobre Laravel en este blog
En el ejemplo de abajo, estaremos, buscando diferentes 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…