Cuando tenemos una entidad asociada a otra: por ejemplo, tenemos estas entidades:
use Doctrine\ORM\Mapping as ORM; /** * Provincia * * @ORM\Table(name=" provincia") * @ORM\Entity */ class Provincia { /** * @var string * * @ORM\Column(name="nombre", type="string", length=45, nullable=true) */ private $nombre; //... } /** * Localidad * * @ORM\Table(name=" localidad") * @ORM\Entity */ class Localidad { /** * @var \ Provincia * * @ORM\ManyToOne(targetEntity="Provincia") * @ORM\JoinColumns({ * @ORM\JoinColumn(name="provincia_id", referencedColumnName="id") * }) */ private $provincia; //.. }
por lo general, si tenemos una localidad, y queremos asociarla a una provincia, necesitariamos tener un objeto de la clase provincia, sacado del repositorio por ejemplo si corresponde a una id que nos llega de un formulario,
$em=$this->getServiceLocator()->get('Doctrine\ORM\EntityManager'); $provincia = $em->getRepository("Provincia")->findOneById($idprovincia); $localidad->setProvincia($provincia);
Esto se puede volver muy tedioso. Por suerte, tenemos un pequeño atajo:
$localidad->setProvincia($em->getReference('Provincia',$idprovincia ));
que viene siendo lo mismo, pero nos ahorramos un par de pasos, que suele ser un alivio cuando hay mucho intercambio con la base de datos.