Estou fazendo um aplicativo de planejamento de casamento onde os usuários podem adicionar seus convidados a determinadas mesas, grupos, etc...
Estou tentando listar todos os grupos e dentro de cada grupo mostrar todos os convidados desse grupo (na mesma página like e acordeão)
Parece fácil e funciona, mas ao usar o DebugBar, posso ver que ele está fazendo duas consultas exatamente iguais e não consigo descobrir o porquê.
Um Evento pode ter muitos grupos e cada grupo pode ter muitos convidados.
$event = Event::find($id_event);
$event->load('group');
$event->group->load([
"guest" => function ($q) {
return $q->paginate(10);
}
]);
Editar
Esqueci de mencionar que se eu adicionar outras relações a isso, elas também serão duplicadas.
$event->group->load([
'guest.plusone',
"guest" => function ($q) {
$q->paginate(10);
}
]);
Editar 2
Ao tentar fazer o que você sugeriu, descobri o que causa isso, mas ainda não sei por quê.
Quando tento fazer o que você sugeriu, obtenho o mesmo resultado
$event->load(['group', 'group.guest' => function ($query) {
$query->paginate(10);
}]);
Mas se eu remover o retorno de chamada da paginação, receberei apenas uma consulta. Isso é normal? Eu sei que a paginação faz uma consulta extra para obter os resultados totais, mas neste caso está fazendo 3 consultas e 2 delas são exatamente iguais