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;
}
}
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;
}
}
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();
}
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