Problema al realizar un segundo filtro a la consulta principal

Publicado por Tahiana Wanda D'astolfo
hace 1 mes

La idea es que me retorne datos dependiendo de los valores de la variables que reciba

/**
     * Mostrar una lista filtrada de prendas.
     */
    public function index($genre, $type = NULL, $collection = NULL)
    {

        $query = Clothe::with(['brand', 'collection', 'gender', 'size', 'typeclothe'])
            ->whereHas('gender', function ($q) use ($genre) {
                $q->where('gender', $genre);
            });

        if ($type) {
            $query = $query->whereHas('typeclothe', function ($q) use ($type) {
                $q->where('type', $type);
            });
        }

        //dd($query);
        $clothes = $query->get();
        dd($clothes);
    }

No entiendo por que la variable $clothes queda vacia siendo que al hacer las comprobaciones con el metodo dd($) puedo corroborar que la variable $query contiene las colecciones filtradas, tambien quiero añadir que este problema solo ocurre cuando agrego el segundo filtro, es decir, si solo dejo la primer consulta:

$query = Clothe::with(['brand', 'collection', 'gender', 'size', 'typeclothe'])
        ->whereHas('gender', function ($q) use ($genre) {
            $q->where('gender', $genre);
        });

    //dd($query);
    $clothes = $query->get();
    dd($clothes);

puedo copiar la coleccion a la variable $clothes sin problemas, estoy pasandome de alto algo? estaria agradecida si me pueden dar una mano, saludos!

eloquent orm orm eloquent bases de datos
Respuesta de Cristian Olaz
hace 1 mes

Hola Tahiana,

En principio no veo problema con tu código.

Cómo definiste la relación "typeclothe" en el modelo "Clothe"?

Y por otra parte, qué ocurre cuando hacés la consulta directamente sobre ese modelo? Por ejemplo:

$r = Type::where("type", $type)->get();
dd($r);

Saludos,

Respuesta de Tahiana Wanda D'astolfo
hace 1 mes

Hola Cristian, gracias por tu respuesta, quería actualizarte sobre la situación y agradecerte por tu tiempo y asistencia., descubrí que el problema estaba en la falta de datos coincidentes en mi base de datos para la consulta que estaba realizando, específicamente, no tenía registros que coincidieran con los criterios de búsqueda que estaba utilizando. Una vez que actualicé los datos en mi base de datos para que coincidieran con los filtros que estaba buscando, la consulta comenzó a funcionar como se esperaba. Gracias nuevamente.

Respuesta de Cristian Olaz
hace 1 mes

Hola Tahiana,

Qué bueno que pudiste solucionarlo!

Saludos,