Relaciones en Doctrine 2: One to One

Tutoriales sobre Doctrine 2

En este tutorial vamos a ver cómo implementar relaciones en doctrine 2, en este caso las relaciones one-to-one o uno a uno, éstas son muy sencillas de implementar aunque tenemos de varios tipos, unidireccionales y bidireccionales, ambas trabajan prácticamente de la misma forma.

La relación uno a uno unidireccional contiene una propiedad en la clase A que permite acceder a la clase B, en cambio la clase B no puede acceder a la clase A.

La relación uno a uno bidireccional tiene una propiedad en la clase A que permite acceder a la clase B, de la misma forma, la clase B tiene una propiedad que permite acceder a la clase A.

Nosotros vamos a crear un ejemplo completo implementando la relación one-to-one unidireccional, simulando una clase Producto y Envío, Product -> Shipping.


Si te fijas, tenemos una propiedad llamada shipping que establece una relación one to one con la tabla shippings, así que en la tabla products tendremos una columna llamada shipping_id que será la clave foránea haciendo relación con la columna id de la tabla shippings.


Aquí en cambio no tenemos más que una sencilla entidad, al ser unidireccional, no tenemos que hacer nada en ella, la entidad Product se encarga de todo.

Ahora vamos a crear un producto relacionado a un envío, el siguiente código funciona, primero creamos el envío y después el producto a enviar relacionado con el envío.


Obviamente todo eso debería estar dentro de una transacción, pero no es el tema que nos ocupa ahora mismo.

Ahora vamos a obtener un producto y su fecha de envío a través de la propiedad shipping de la entidad Product, la cuál nos devuelve la instancia del mismo.


Con el método getShipping de la clase Product doctrine nos devuelve una instancia de la entidad Shipping.

Obtener todos los productos y sus envíos es igual de sencillo, sólo debemos utilizar el método findAll del repositorio de la entidad Product.


Y eso es todo, así de sencillo es implementar una relación one-to-one unidireccional en doctrine 2.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR

Aviso de cookies
¿Quieres aprender a programar de forma rápida y ordenada sin perder tu tiempo?

En cursosdesarrolloweb.es tenemos 40 cursos disponibles sobre desarrollo web y móvil.

  • Cursos con acceso ilimitado.
  • Nada de suscripciones, pagas una vez y accedes para siempre.
  • Cursos actualizados utilizando las tecnologías más demandadas.
  • Acceso inmediato, una vez te inscribas puedes acceder.
  • Recibe soporte en caso de dudas a través de los foros.
  • Descarga tu certificado una vez finalices el curso.