Foros del Web » Programando para Internet » PHP » Symfony »

[SOLUCIONADO] Problemas con campo tipo entity y repositories

Estas en el tema de Problemas con campo tipo entity y repositories en el foro de Symfony en Foros del Web. Hola genta, nuevamente aquí molestándolos con un problema en un campo tipo entity. Resulta que intento que en el campo de un FormType me muestre ...
  #1 (permalink)  
Antiguo 27/02/2014, 15:05
 
Fecha de Ingreso: febrero-2014
Ubicación: Edo. México
Mensajes: 85
Antigüedad: 10 años, 2 meses
Puntos: 0
Problemas con campo tipo entity y repositories

Hola genta, nuevamente aquí molestándolos con un problema en un campo tipo entity. Resulta que intento que en el campo de un FormType me muestre en un "Select" todos los nombres de Equipo registrados en la base de datos y para hacerlo genere el siguiente código:

FormType:RegistroJugadorType
Código PHP:
$builder->add('X''submit', array(                                        
                                        
'attr'  => array('class' => 'btnBorrar button button-pill button-caution button-tiny ')                                        
                                    ))                
                ->
add('id_InsEquipo''entity', array(
                
'class' => 'FutbolMainBundle:Inscripcionequipo',                
                
'property' => 'nombre',
                
'multiple' => false,
                
'expanded' => false,   
                
'label' => 'Equipo',
                
'attr' => array('class' => 'SelectC2NJugador'),                
                
'empty_value' => '**Selecciona un Equipo**',
                
'query_builder' => function(FutbolMainBundleRepositoryInscripcionequiposRepository $em) {
                        return 
$em->NombreEquipos(); },    
                    )); 
Repository:InscripcionequiposRepository
Código PHP:
  return $this->getEntityManager()->createQueryBuilder()
                ->
select('a')
                ->
from('FutbolMainBundle:Equipos''a')
                ->
join('a.insEqEquipos''r')
                ->
where('r.idCliente = ?1')
                ->
setParameter(1'2');
         
//         return $this->getEntityManager()->createQuery("
//                Select a
//                From Equipos a
//                JOIN a.insEqEquipos r
//                WHERE r.idCliente = ?1")
//                ->setParameter(1, '2')
//                ->getResult(); 
La cuestión es, que así como lo tengo si me aparece el select y el resto del formulario sin errores, el problema es que solo me muestra un danto dentro del Select , cuando deberían de ser al menos 4. El cuery del repository está bien, cuando menos en lógica, pues copiándolo me arroja los datos correctos en SQL.

Saludos espero puedan ayudarme o darme alguna idea
  #2 (permalink)  
Antiguo 27/02/2014, 20:59
 
Fecha de Ingreso: febrero-2014
Ubicación: Edo. México
Mensajes: 85
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Problemas con campo tipo entity y repositories

Estoy intentando hacer lo que comentaba hace rato, pero me surgió una duda. Se puede crear un campo de tipo 'entity' el cual se alimente de un repositorio que hace una consulta Join y que el campo que necesite se encuentre en el segundo nivel ?

A ver si me pudo explicar mejor:

Tengo 4 Entidades mas o menos asi:

1.-Jugador
*registroJugador -> ArrayCollection() -> (uno a muchos con Tabla RegistroJugador)

2.-RegistroJugador
*idJugador -> (muchos a uno con Tabla Jugador)
*idInsEquipo -> (muchos a uno con Tabla InscripcionEquipo)
*numero
*posicion

3.-InscripcionEquipo
*registroJugador -> ArrayCollection() -> (uno a muchos con Tabla RegistroJugador)
*idEquipo -> (muchos a uno con Talba Equipo)
*pago

4.-Equipos
*InsEquipos -> ArrayCollection() -> (uno a muchos con Tabla InscripcionEquipo)
*nombre

Con estas Entidades genero un FormType de la Entidad Jugador y mediante una "collection" inserto varios formularios de la Entidad "RegistroJugador" y a su vez en los formularios de RegistroJugador deceo agregar un campo de tipo "entity" que me generara un select arrojándome los nombres de los equipos existentes. Mi pregunta es ¿Puedo generar este campo Entity desde el FormType de RegistroJugador o he de crear otro FormType para "InscripcionEquipo" y generar ahí el campo de tipo 'entity'?.

Lo que llevo hasta ahora para lograr generar el select desde el FormType RegistroJugadorType es exactamente lo que he puesto arriba, pero esta consulta solo me regresa un valor en el select.

Espero me haya podido dar a entender.
Saludos
  #3 (permalink)  
Antiguo 28/02/2014, 13:23
 
Fecha de Ingreso: febrero-2014
Ubicación: Edo. México
Mensajes: 85
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Problemas con campo tipo entity y repositories

Ya lo resolví dejo el codigo:

Repositorio:
Código PHP:
class InscripcionequiposRepository extends EntityRepository {
   
    
    public function 
getNombres($idCliente)
{
    
$qb $this->getNombresQueryBuilder($idCliente);
    return  
$qb->getQuery()->getResult();
}

public function 
getNombresQueryBuilder($idCliente)
{
    return 
$this->createQueryBuilder('c')
        ->
select('c','r')
        ->
Join('c.idEquipo''r')
        ->
where('c.idCliente = :company')
        ->
setParameter('company'$idCliente);
}

FormType:

Código PHP:
public function buildForm(FormBuilderInterface $builder, array $options)
    {
        
$idCliente=2;
        
$builder->add('X''submit', array(                                        
                                        
'attr'  => array('class' => 'btnBorrar button button-pill button-caution button-tiny ')                                        
                                    ))                
                ->
add('id_InsEquipo''entity', array(
                
'class' => 'FutbolMainBundle:Inscripcionequipo',                
                
                
'property' => 'idEquipo.nombre'
                
'label' => 'Equipo',
                
'attr' => array('class' => 'SelectC2NJugador'),                
                
'empty_value' => '**Selecciona un Equipo**',
                
'query_builder' => function(FutbolMainBundleRepositoryInscripcionequiposRepository $em) use ($idCliente)  {
                        return 
$em->getNombresQueryBuilder($idCliente); },    
                    ))
                ->
add('numero')
                ->
add('posicion');
    } 
La magia era en la opcion 'property' =>'idEquipo.nombre' , no sabia que podia accesar a los atributos de las entidades de esa forma

Saluods

Etiquetas: campo, entity, tipo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:06.