Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Problema función show laravel

Estas en el tema de Problema función show laravel en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buen día amigos esty generando esta función para encontrar primero un empleado, adicional a eso por medio del empleado busco que equipos están asociados al ...
  #1 (permalink)  
Antiguo 21/05/2016, 10:15
 
Fecha de Ingreso: septiembre-2007
Mensajes: 47
Antigüedad: 17 años, 3 meses
Puntos: 0
Pregunta Problema función show laravel

Buen día amigos

esty generando esta función para encontrar primero un empleado, adicional a eso por medio del empleado busco que equipos están asociados al empleado, y cuando encuentro los equipos, genero una consulta dentro un foreach para encontrar el monitor asociado a cada equipo.

El problema es que el foreach solo me esta retornando solo un monitor asociado, en este caso solo me trae el ultimo.
es como si no estuviera recorriendo el foreach, verifique imprimiendo la consulta dentro foreach y me imprime 6 registros, no entiendo por al pasar la variable monitores a la vista me envia solo el ultimo registro.


public function show($id)
{
// se busca los datos del empleado.
$empleado = $this->empleado->find($id);

// se busca con el id del empleado cuales equipos tiene asociado.
$equipos=$this->equipo->where('empleado_id','=',$id)->get();

//se recorre todos los equipos asociados en busca de monitor asociado a los equipos.
foreach($equipos as $equipo){
$monitores=$this->monitor->where('equipo_id','=',$equipo->id)->get();
}
return View('empleados.show',compact('monitores');
}
  #2 (permalink)  
Antiguo 21/05/2016, 19:42
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 5 meses
Puntos: 379
Respuesta: Problema función show laravel

Código PHP:
Ver original
  1. foreach($equipos as $equipo){
  2. $monitores=$this->monitor->where('equipo_id','=',$equipo->id)->get();
  3. }
$monitores no es un arreglo así que en cada vuelta del foreach cambias el valor de la variable, la solución seria algo como esto:
Código PHP:
Ver original
  1. $monitores = [];
  2. foreach($equipos as $equipo){
  3. $monitores[]=$this->monitor->where('equipo_id','=',$equipo->id)->get();
  4. }
Pero con eso ahora tienes el problema de que en cada vuelta estas haciendo una consulta y eso va a reducir el rendimiento de tu aplicación.
Tu le puedes decirle a Eloquent que pida equipos y monitores en una sola consulta, eso se realiza con el método with:
Código PHP:
Ver original
  1. $empleado = Empleado::find($id)->with('equipos.monitores')->get();
Con eso ya tienes el empleado con los equipos y monitores asociados, solo tienes que recorrer las relaciones en la vista.
Para mas detalles visita la documentación: https://laravel.com/docs/5.1/eloquen...#eager-loading
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: laravel, show
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:43.