Buscar una palabra en la base de datos, en Laravel

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…

Translate »