Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Obtener registros con Doctrine

Estas en el tema de Obtener registros con Doctrine en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola Estoy probando Doctrine con Symfony 2.1 ya que soy muy nuevo en estos temas de los ORM y los frameworks para php, y tengo ...
  #1 (permalink)  
Antiguo 15/01/2013, 19:41
 
Fecha de Ingreso: enero-2013
Mensajes: 4
Antigüedad: 11 años, 3 meses
Puntos: 0
Obtener registros con Doctrine

Hola

Estoy probando Doctrine con Symfony 2.1 ya que soy muy nuevo en estos temas de los ORM y los frameworks para php, y tengo una inquietud que no he podido resolver

tengo la siguiente relación: Un curso tiene varios estudiantes, por tanto es una relación uno a muchos y he planteado las entidades curso y estudiante de la siguiente manera:

Código PHP:
namespace tablacursosBundleEntity;

use 
DoctrineORMMapping as ORM;
use 
DoctrineCommonCollectionsArrayCollection;
/**
 * tabla\cursosBundle\Entity\Curso
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="tabla\cursosBundle\Entity\CursoRepository")
 */
class Curso
{
    
/**
     * @var integer $id
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    
private $id;

    
/**
     * @var string $nombre
     *
     * @ORM\Column(name="nombre", type="string", length=255)
     */
    
private $nombre;

    
/**
     * @ORM\OneToMany(targetEntity="estudiante", mappedBy="Curso")
     */
    
private $estudiantes;
    
    
    public function 
__construct() {
        
$this->estudiantes = new ArrayCollection();
    }
    
    
/**
     * Get id
     *
     * @return integer 
     */
    
public function getId()
    {
        return 
$this->id;
    }

    
/**
     * Set nombre
     *
     * @param string $nombre
     * @return Curso
     */
    
public function setNombre($nombre)
    {
        
$this->nombre $nombre;
    }

    
/**
     * Get nombre
     *
     * @return string 
     */
    
public function getNombre()
    {
        return 
$this->nombre;
    }
    
    public function 
addEstudiantes(tablacursosBundleEntityestudiante $estudiante)
    { 
        
$this->estudiantes[] = $estudiante;
    }
    
    public function 
getEstudiantes()
    { 
        return 
$this->estudiantes;
    }

Ahora, la entidad estudiante:
Código PHP:
namespace tablacursosBundleEntity;

use 
DoctrineORMMapping as ORM;

/**
 * tabla\cursosBundle\Entity\estudiante
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="tabla\cursosBundle\Entity\estudianteRepository")
 */
class estudiante
{
    
/**
     * @var integer $id
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    
private $id;

    
/**
     * @var string $nombre
     *
     * @ORM\Column(name="nombre", type="string", length=255)
     */
    
private $nombre;

    
/**
     * @var string $apellido
     *
     * @ORM\Column(name="apellido", type="string", length=255)
     */
    
private $apellido;

    
/**
     * @ORM\ManyToOne(targetEntity="Curso", inversedBy="estudiante")
     * @ORM\JoinColumn(name="curso_id", referencedColumnName="id")
     * @return integer 
     */
    
private $curso;

    
/**
     * Get id
     *
     * @return integer 
     */
    
public function getId()
    {
        return 
$this->id;
    }

    
/**
     * Set nombre
     *
     * @param string $nombre
     * @return estudiante
     */
    
public function setNombre($nombre)
    {
        
$this->nombre $nombre;
    
        return 
$this;
    }

    
/**
     * Get nombre
     *
     * @return string 
     */
    
public function getNombre()
    {
        return 
$this->nombre;
    }

    
/**
     * Set apellido
     *
     * @param string $apellido
     * @return estudiante
     */
    
public function setApellido($apellido)
    {
        
$this->apellido $apellido;
    
        return 
$this;
    }

    
/**
     * Get apellido
     *
     * @return string 
     */
    
public function getApellido()
    {
        return 
$this->apellido;
    }
    
    public function 
setCurso(tablacursosBundleEntityCurso $curso)
    {
        
$this->curso $curso;
    }
    
    public function 
getCurso()
    {
        return 
$this->curso;
    }

Ahora dentro del controlador de symfony tengo esta función:

Código PHP:
public function getEstudiantesAction(Request $request$id)
    {
        
$em $this->getDoctrine()->getManager();
        
        
$entity $em->getRepository('tablacursosBundle:Curso')->find($id);

        if (!
$entity) {
            throw 
$this->createNotFoundException('Unable to find Curso entity.');
        }
        
$estudiantes $entity->getEstudiantes();
        foreach (
$entity->getEstudiantes() as $estudiante)
        {
            echo 
"est: ".$estudiante->getNombre()."<br />";
        }
        if(
$estudiantes instanceof tablacursosBundleEntityestudiante)
        {
            echo 
"es un array de Estudiantes";
        } else {
            echo 
"no es un array de Estudiantes";
            
        }
        return new 
Response();

Hasta aqui todo de maravilla, es un ejemplo muy similar al que está en la documentación de Doctrine, pero cuando ejecuto esta funcion, me trae el curso pero no me trae los estudiantes que pertenecen a este curso...

La verdad he leido la documentacion de Doctrine pero no encuentro nada parecido al problema que planteo y agradecería enormemente a quienes me puedan dar una ayudita con este inconveniente, tal vez lo unico que he podido notar es que al momento de hacer el find no entra al constructor de la entidad curso pero no se si esto es normal al ejecutar el find del entitymanager.

Gracias de antemano por sus comentarios
  #2 (permalink)  
Antiguo 16/01/2013, 09:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Obtener registros con Doctrine

Es un tema estrictamente de programación (no hay acá nada de SQL y diseño de arquitectura de datos o servidores de bases de datos).
Siendo un ORM para PHP, muevo al foro de PHP Orientado a Objetos para que vean el tema.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 16/01/2013, 09:54
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: Obtener registros con Doctrine

Estas persistiendo la relación ?, te sugiero que leas sobre Owning Side and Inverse Side.
__________________
http://es.phptherightway.com/
thats us riders :)
  #4 (permalink)  
Antiguo 16/01/2013, 17:30
 
Fecha de Ingreso: enero-2013
Mensajes: 4
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Obtener registros con Doctrine

Perdón, no caí en cuenta que se trata de algo más relacionado con la programación, lamento las molestias y gracias por sus comentarios.

Voy a investigar más a fondo sobre lo que me recomiendas gracias

Etiquetas: bases-de-datos-general, doctrine, php, registros, tabla
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 03:45.