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

Peleandome con Controller

Estas en el tema de Peleandome con Controller en el foro de Symfony en Foros del Web. Buenas, voy directo al grano, tengo una web en la que almaceno videos, estos videos a su vez se almacenan dentro de unas categorías, tanto ...
  #1 (permalink)  
Antiguo 15/04/2013, 09:49
 
Fecha de Ingreso: noviembre-2010
Mensajes: 234
Antigüedad: 13 años, 5 meses
Puntos: 2
Peleandome con Controller

Buenas, voy directo al grano, tengo una web en la que almaceno videos, estos videos a su vez se almacenan dentro de unas categorías, tanto los videos como las categorías tienen una tabla dentro de la base de datos y están relacionadas entre sí, los videos cogen el "id" de la categoría a la que pertenecen.

Hasta aquí todo correcto, ahora me gustaría poder conseguir que en el index de mi web se mostraran unicamente 4 videos de cada categoría y que cada una se pueda diferenciar de la otra, lo que he conseguido hasta ahora es que se muestren las diferentes categorias al menos los letreros de cada una, lo que me ocurre que los cuatros videos que me deberian de cargar debajo de la cabecera de cada categoría no corresponde con el que debería, os dejo el código del controlador y a ver si alguien me puede echar un cable, gracias por todo.
Código PHP:
$consulta_c $em->createQuery('SELECT DISTINCT o FROM VideoBundle:Categoria o');
        
$categorias $consulta_c->getResult();
        foreach (
$nombre as $categorias){
            
$n=$nombre->getNombre();
            
            
$consulta_v $em->createQuery('SELECT o, c
                                        FROM VideoBundle:Video o, VideoBundle:Categoria c
                                        WHERE o.categoria=c.id AND c.nombre='
.$n.'
                                        ORDER BY o.fechaPublicacion DESC'
);
        
$consulta_v->setMaxResults(4);
        
$video $consulta_v->getResult();
            
        }
        
        
       
        return 
$this->render(
                
'VideoBundle:Front:index.html.twig',
                array(
                    
                      
'videos' => $video,
                      
'categorias' => $categorias
                      
)
                ); 
  #2 (permalink)  
Antiguo 15/04/2013, 10:10
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Peleandome con Controller

Recuerda que DQL != SQL, utiliza JOIN en lugar de WHERE o.categoria = c.id

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 15/04/2013, 10:17
 
Fecha de Ingreso: noviembre-2010
Mensajes: 234
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: Peleandome con Controller

Me dice el error que me dá el $nombre no está inicializado, pero es que yo en la función no he pedido $nombre ya que es la página de inicio.
  #4 (permalink)  
Antiguo 15/04/2013, 10:30
 
Fecha de Ingreso: noviembre-2010
Mensajes: 234
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: Peleandome con Controller

Yo es que tenía antes otro código que era este:
Código PHP:
$consulta_c $em->createQuery('SELECT DISTINCT o FROM VideoBundle:Categoria o');
        
$categorias $consulta_c->getResult();
        
        
$consulta_v $em->createQuery('SELECT o
                                        FROM VideoBundle:Video o
                                        ORDER BY o.fechaPublicacion DESC'
);
        
$consulta_v->setMaxResults(4);
        
$video $consulta_v->getResult(); 
Pero este me mostraba todas las categorías que tengo en la base de datos pero no me pone cada video en su correspondiente, sino me saca todos los videos de la primera categoría y estos se repiten en el resto, imagino que aquí habrá que hacer una relación entre el id de la categoría y el categoria_id que contiene cada video, pero esto es lo que ya se me escapa de las manos.
  #5 (permalink)  
Antiguo 15/04/2013, 10:47
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Peleandome con Controller

La relación se hace a traves del JOIN,

Código DQL:
Ver original
  1. SELECT v
  2. FROM Video v
  3. JOIN v.category c
  4. WHERE c.name = 'MyCategory'

mi ejemplo asume que cada vídeo tiene una única categoría la cual es la propiedad category de la clase Video
__________________
http://es.phptherightway.com/
thats us riders :)
  #6 (permalink)  
Antiguo 15/04/2013, 10:58
 
Fecha de Ingreso: noviembre-2010
Mensajes: 234
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: Peleandome con Controller

Lo que yo veo es que 'MyCategory' no puede ser el nombre de una categoría, ya que si creo nuevas categorías quiero que estas también se muestren en la página de inicio con el resto de categorías
  #7 (permalink)  
Antiguo 15/04/2013, 12:22
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Peleandome con Controller

Es un ejemplo de DQL..., si es dinámico simplemente tienes que bindear el parámetro, pasaste por la documentación de Doctrine ?
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: controller
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 08:50.