Estou tentando descobrir uma solução boa (e rápida) para o seguinte problema:
Eu tenho dois modelos com os quais estou trabalhando, vamos chamá-los de jogadores e equipes. Um jogador pode estar em várias equipes e uma equipe pode ter vários jogadores). Estou trabalhando na criação de um elemento de interface do usuário em um formulário que permita ao usuário selecionar várias equipes (caixas de seleção). Como o usuário está selecionando (ou desmarcando) equipes, eu gostaria de exibir as equipes agrupadas pelos jogadores.
Então, para exemplos:
Se as equipes selecionadas não tiverem jogadores que se cruzem, cada equipe terá sua própria seção.
Se o usuário selecionar duas equipes e eles tiverem os mesmos jogadores, haveria uma seção contendo os nomes das duas equipes e de todos os jogadores.
Se TEAM_A tiver jogadores [1, 2, 4, 5] e TEAM_B tiver jogadores [1, 3, 5, 6]. Existem as seguintes seções: SECTION_X = [TEAM_A, TEAM_B, 1, 5], SECTION_Y = [TEAM_A, 2, 3], SEÇÃO _Z = [TEAM_B, 3, 5]
Espero que esteja claro. Essencialmente, quero encontrar as equipes que os jogadores têm em comum e agrupar por isso. Eu estava pensando que talvez haja uma maneira de fazer isso navegando em um gráfico bipartido? Não tenho muita certeza de como e eu posso estar pensando demais. Eu esperava fazer isso criando algum tipo de estrutura de dados no servidor e usando-o no cliente. Gostaria muito de ouvir suas sugestões e agradeço qualquer ajuda que você possa dar!
Team
deve ter um campo chamadoplayers
que exija um relacionamento muitos-para-muitos com seu outro modeloPlayer
. Isso permite recuperar quais jogadores estão em cada equipe e quais equipes estão associadas a cada jogador.