Estoy hace tiempo intentando realizar un simple insert en una de dos entidades relacionadas Many to One y no consigo lograrlo.
Les comento un poco las etapas por las que he pasado.
Primeramente, mis entidades están definidas y relacionadas de la siguiente manera:
La primera contiene tipos de pasajes
Código PHP:
class tipoPasaje
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity="Pasaje", mappedBy="codTipopas")
*/
protected $aPasaje;
public function __construct()
{
$this -> aPasaje = new ArrayCollection();
}
.... mas campos
}
Código PHP:
class Pasaje
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
.........
/**
* @var integer $cdTipopas
*
* @ORM\Column(name="cdTipopas", type="integer")
* @return integer
*/
private $cdTipopas;
public function setTipopas(tipoPasaje $cdTipopas)
{
$this -> cdTipopas = $cdTipopas;
}
public function getTipopas()
{
return $this -> cdTipopas;
}
/**
* @ORM\ManyToOne(targetEntity="tipoPasaje", inversedBy="aPasaje")
* @ORM\JoinColumn(name="cdTipopas", referencedColumnName="id")
*/
protected $codTipopas;
....
}
Código PHP:
$pasaje->setTipopas(1);
Entonces, probé con la siguiente solución:
Código PHP:
$ip=$this->getDoctrine()->getEntityManager();
... asignaciones varias a otras columnas
$pasaje->setTipopas($ip->getReference('pasajesBundle:tipoPasaje','1'));
... otras asignaciones
$ip->persist($pasaje);
$ip->flush();
ORA-01400: no se puede realizar una inserción NULL en ("UTN_DES"."PASAJE"."CDTIPOPAS")
Lo que me indica obviamente, que el objeto que estoy intentando referenciar con getReference no carga nada.
Cabe aclarar que, en la base de datos, el objeto contiene dos datos, con id 1 y 2 respectivamente. Con lo que la referencia a 1 debería existir.
Sigo buscando información pero realmente estoy desorientada... Obviamente, en algo me estoy equivocando, pero no encuentro en qué .
Alguno de ustedes podrá ayudarme a encontrar este error?
Desde ya, mil gracias a todos!