Laravel - Generar el where dinámica en una query

 
Vista:

Generar el where dinámica en una query

Publicado por Schattenburg (1 intervención) el 15/10/2019 12:15:54
Hola a todos,

estoy empezando a estudiar Laravel desde cero y quiero generar una query pero que el where se genere dinámicamente a partir de los parámetros que se pasen.

Mi código es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
DB::enableQueryLog();
 
$arrHist = DB::table('historial')
        ->join('cineastas', 'cineastas.id', '=', 'historial.id_cineasta')
        ->join('peliculas', 'peliculas.id', '=', 'historial.id_pelicula')
        ->join('categorias', 'categorias.id', '=', 'historial.id_categoria')
        ->select('peliculas.titulo as titPelicula', 'cineastas.nombre as nomCineasta', 'categorias.nombre as nomCateg','historial.anno','premiado','historial.id')
        ->orderby('titPelicula');
 
 
if (isset($anno)) {
  $arrHist->where('historial.anno', $anno);
}
 
if (isset($id_categ)) {
    $arrHist->where('historial.id_categoria', $id_categ);
}
$arrHist->get();
 
dd(DB::getQueryLog());

Al poner el dd(DB::getQueryLog()) me pone que está todo bien, veo que la query se genera como yo quiero y que los parámetros que yo paso son los correctos.

El problema viene en la view a la que le mando arrHist, pongo por ejemplo:

1
2
3
@foreach ($arrHist as $clave=>$valor)
   {{ $valor->titPelicula }}
@endforeach

Me da un error que titPelicula no existe. Pongo un {{ dd($valor) }} y no veo dónde están los resultados de la query.

¿Qué estoy haciendo mal?

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Cristina
Val: 105
Oro
Ha mantenido su posición en Laravel (en relación al último mes)
Gráfica de Laravel

Generar el where dinámica en una query

Publicado por Cristina (43 intervenciones) el 17/10/2019 07:19:01
En el controlador, al terminar la consulta, te falta poner:
return view('nombre_carpeta. nombre_vista,compact('nombre_variable'));
Así le dices en que vista se va a mostrar el dato de esa variable.
Y asegúrate que en las rutas apuntes al controlador-función que dirige esa acción.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar