Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/03/2014, 19:25
Esdras_mtz
 
Fecha de Ingreso: febrero-2014
Ubicación: Edo. México
Mensajes: 85
Antigüedad: 10 años, 9 meses
Puntos: 0
Generando DB Queries innecesarios en campo Etity

Hola comunidad, tiempo sin molestarlos :P

Más que problema es una duda en Symfony2.4, con respecto a los campos "Entity" o "selects" que se alimentan de una BD y formularios embebidos.
Tengo un formulario que tiene embebido otro formulario que a su vez tienen 3 campos "Entity" que me generan un select con las opciones de la BD. Para explicar mejor mi duda inserto una imagen de cómo queda este formulario:

Como pueden observar con solo cuatro formularios embebidos genero un total de 32 DB Queries. Esto debido a que por cada campo "Entity" me genera de 1 a 3 consultas para obtener las opciones y si agrego otro formulario mediante el botón "Agregar" se suman otras 6 DB Queries.

Se me ocurrió pasar un objeto que contuviera todas las Entidades que ocupo en los FormType, algo así

Código PHP:
$TorneoRol $em->getRepository('FutbolMainBundle:Torneos')->getJoinnEntidades($id,$Cliente_id);
$editForm $this->createForm(new TorneoType(), $TorneoRol, array('ClienteID' => $Cliente_id,'idToreno' =>$id,'Torneo'=>$TorneoRol)); 
Y posteriormente ocuparlas en los repocitorios de los "Entity" así:
Código PHP:
//FormType
$Torneo =$options['Torneo'];
        
$builder
                
->add('idInscripcionequipo''entity', array(
                
'class' => 'FutbolMainBundle:Inscripcionequipo',   
                
'property' => 'idEquipo'
                
'empty_value' => '**Selecciona un Equipo**',
                
'query_builder' => function(FutbolMainBundleRepositoryInscripcionequiposRepository $em) use ($idCliente,$idToreno,$Torneo)  {
                        return 
$em->getEquipos($idCliente,$idToreno,$Torneo); }, 
                                                      ));

// Repositorio Inscripcioneqipo
public function getEquipos($idCliente,$idToreno,$Torneo)
{
    return 
$this->createQueryBuilder('ins')  
        ->
Join('ins.idEquipo''e')
        ->
leftJoin('ins.idTorneo''t')
        ->
Join('ins.PIExy''pie')
        ->
Join('pie.idPartido''p')
        ->
where('ins.idCliente = :company')
        ->
andWhere('ins.idTorneo = :torneo')
        ->
setParameters(array ('company' => $idCliente,
                               
'torneo' => $Torneo))
        ->
orderBy('e.nombre''ASC');

Pero nop, me sigue marcando la misma cantidad de Queries

Alguien sabe algo al respecto que me pueda orientar un poco?