Sé que esta es una pregunta antigua, pero la encontré mientras buscaba una forma de crear PK compuesta y pensé que podría usar alguna actualización.
Las cosas son mucho más simples si lo que necesita es una clave primaria compuesta. (Lo que, por supuesto, garantiza la singularidad) La documentación de Doctrine contiene algunos buenos ejemplos en esta URL: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/composite-primary-keys.html
Entonces, el ejemplo original podría verse así:
/**
* @var string $videoDimension
*
* @ORM\Id @ORM\Column(type="string")
*/
private $videoDimension;
/**
* @var string $videoBitrate
*
* @ORM\Id @ORM\Column(type="string")
*/
private $videoBitrate;
Algunas notas aquí:
- La columna "nombre" se omite ya que Doctrine puede adivinarla basándose en el nombre de la propiedad.
- Dado que
videoDimension
y videoBitrate
son ambas partes del PK, no es necesario especificarnullable = false
- Si es necesario, la PK compuesta puede estar compuesta de claves externas, así que siéntase libre de agregar algunas asignaciones relacionales