es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El generador de consultas no encontró información al utilizar el %.

Estoy intentando usar el generador de consultas en el controlador utilizando Laravel, pero no entiendo por qué la consulta no encuentra los datos.

Aquí está el código:

public function index()
{
    $data = downloads::all();

    if(request('searchName')){
        $data = $data->where('fileName','like','%'.request('searchName').'%'); //Aquí está el problema
        return view('download', compact('data'));
    }
    else{
        return view('download', compact('data'));
    }
}

Ya he intentado dd(request('searchName')) y muestra la entrada que ingreso, así que no hay problema aquí.

Cuando uso $data->where('fileName','like','%'.request('searchName').'%'), no se muestran datos.

No creo que haya escrito mal el nombre de archivo (fileName) porque cuando uso $data->where('fileName','like',request('searchName')), funciona y muestra el archivo, pero el nombre de archivo debe ser exactamente igual que el nombre de búsqueda ingresado, y por supuesto eso no es lo que quiero.

Incluso cuando uso dd('%'.request('searchName').'%'), muestra "%*searchName*%", por eso estoy tan confundido cuando no funciona cuando uso $data->where('fileName','like','%'.request('searchName').'%').

Incluso he usado SELECT * FROM *tables* WHERE fileName LIKE '%p%'; en SQL Workbench y funciona perfectamente bien.

¿Alguna sugerencia sobre qué debo hacer? Gracias.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el problema podría estar en la forma en que se asigna la variable $data. Estás recuperando todos los datos de la tabla downloads en la línea $data = downloads::all(); y luego intentas filtrarlos usando $data->where('fileName','like','%'.request('searchName').'%');, lo cual podría resultar en un comportamiento inesperado.

    En su lugar, puedes recuperar directamente los datos filtrados utilizando un constructor de consultas de esta manera:

    $data = downloads::where('fileName', 'like', '%' . request('searchName') . '%')->get();
    

    Esto debería devolver los datos esperados basados en la consulta de búsqueda.

    Además, es posible que desees considerar el uso de la paginación para limitar la cantidad de resultados que se muestran en la página. Puedes lograr esto añadiendo ->paginate(10) al final del constructor de consultas, donde 10 es el número de resultados que se mostrarán por página.

    ¡Espero que esto ayude!

Comments are closed.