[Resuelto] ayuda con consulta

Publicado hace 10 meses por luis

Siguiendo las indicaciones de Italo, subo enlace a la imagen explicativa. Tengo el modelo Partido con su tabla partidos y relacionada con la tabla equipo_jugador que tiene el modelo Plantilla, relacionado muchos a muchos. la tabla jugador_partido es la pivote. en el esquema de la tabla de la base de datos de la tabla jugador_partido se ve que un partido es jugado por los jugadores de un equipo, (partido 2 jugado por jugadores 1,3,4,5,7, que pertenecen a un equipo), y el (partido 5 jugado por jugadores 1,3,4,5,7, que pertenecen a el mismo equipo). Los campos id_equipo e id_jugador no son claves foráneas, sino que corresponden a la relación dentro de la tabla equipo_jugador insertadas en la base de datos automáticamente para ayudar en las consultas si procede. La pregunta es como hago una gráfica con los minutos jugados por cada uno de los jugadores del equipo, por ejemplo...(el jugador 27 que pertenece al equipo 1 y cuyo equipojugador_id es el 3 debería de salir que ha jugado 54 min), (el jugador 20 que pertenece al equipo 1 y cuyo equipojugador_id es el 1 debería de salir que ha jugado 40 min). Todo esto actualizándose la gráfica dinámicamente a medida que se van metiendo mas partidos.

imagen: [img]http://img.fenixzone.net/i/wsESmQo.png[/img] http://img.fenixzone.net/i/wsESmQo.png

Mejor respuesta Marcada por España luis

luis hace 10 meses

pues la solución fue la siguiente consulta:

$partidos = DB::table('jugador_partido') ->join('equipos','equipos.id','=','equipo_id') ->join('jugadors','jugadors.id','=','jugador_id') ->select('jugadors.nombre_jugador', 'jugadors.apellidos_jugador', DB::raw('SUM(jugador_partido.minutos_jugados_jugador_partido) as total_minutos'), ->where('id_equipo', '=', $busca_equipo) ->groupBy('jugadors.nombre_jugador','jugadors.apellidos_jugador')->get();

Consigo un array con el nombre del jugador y la suma de sus minutos jugados, el equipo ya lo traigo por medio del request. Después lo itero en la vista de la gráfica y listo.