Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

343
Vistas
Encuentre registros que tengan todos los ID en la tabla dinámica en otra tabla Laravel

En mi proyecto laravel tengo las tablas que se muestran a continuación.

los groups y users están en una relación Muchos a Muchos, lo que significa que un usuario puede pertenecer a varios grupos.

La tabla group_user es una tabla intermedia que representa qué usuario pertenece a qué grupo.

La tabla slot_votes registra el voto de los usuarios en el espacio. Su relación con la tabla de groups es la tabla de groups hasMany slot_votes .

mesa de groups

 |id | channel_id | +---+---------+ |1 | U124 | |2 | U123 | |3 | U125 | |4 | U127 |

tabla de users

 |id | name | +---+---------+ |1 | A | |2 | B | |3 | C | |4 | D |

tabla group_user

 |id | group_id | user_id | +---+----------+-----------+ |1 | 1 | 1 | |2 | 2 | 1 | |3 | 2 | 2 | |4 | 3 | 3 | |5 | 4 | 3 | |6 | 1 | 4 |

tabla slot_vote

 |id | user_id | group_id | slot | +---+---------+-----------+-----------+ |1 | 1 | 1 | A | |2 | 2 | 1 | B | |3 | 2 | 2 | C | |1 | 1 | 4 | C |

Mi pregunta es ¿cómo puedo usar Laravel Eloquent para obtener las identificaciones de grupo en las que votaron todos sus miembros?

Por ejemplo, si los miembros del grupo 1 son $userId = [1, 4] y tanto el usuario 1 como el 4 votaron (por lo tanto, existe en la tabla slot_votes), quiero obtener la identificación del grupo 1 en el resultado.

Lo que he probado:

 Group::whereHas('users', function ($query, $votedUser) { $query->whereIn( 'id', SlotVote::where('group_id', $groupId)->pluck('user_id')->unique() ); }, '=', count($votedUser))->get();

Pero no pude averiguar cómo obtener $groupId en la cláusula whereIn . Además, me preocupa el rendimiento de la consulta. ¿Alguna idea sobre cómo puedo obtener los resultados que necesito?

Gracias por adelantado.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Logré resolverlo usando el siguiente código:

 Group::leftJoin('group_user', 'groups.id', '=', 'group_user.group_id') ->leftJoin('slot_votes', 'group_user.user_id', '=', 'slot_votes.user_id') ->selectRaw( "groups.id, channel_id, count(distinct group_user.user_id) as members, count(distinct slot_votes.user_id) as voted_members", ) ->groupBy('groups.id') ->havingRaw('members=voted_members') ->get();
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda