symfony2和doctrine:在一对多关系中,分配外键的唯一键

时间:2013-12-27 10:51:02

标签: symfony doctrine-orm

我有这个实体:

class Partido
{
/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @ORM\ManyToOne(targetEntity="Project\Bundle\AdminBundle\Entity\Jornada", inversedBy="partidos")
 * @ORM\JoinColumn(name="temporada_id", referencedColumnName="id")
 **/
private $jornada;

/**
 * @ORM\OneToOne(targetEntity="Project\Bundle\AdminBundle\Entity\Equipo")
 * @ORM\JoinColumn(name="equipo1_id", referencedColumnName="id")
 */
private $equipo1;

/**
 * @ORM\OneToOne(targetEntity="Project\Bundle\AdminBundle\Entity\Equipo")
 * @ORM\JoinColumn(name="equipo2_id", referencedColumnName="id")
 */
private $equipo2;

当我生成数据库时,equipo1equipo2是唯一的密钥,为什么?

CREATE TABLE IF NOT EXISTS `partido` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `temporada_id` int(11) DEFAULT NULL,
  `equipo1_id` int(11) DEFAULT NULL,
  `equipo2_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `UNIQ_4E79750B8D588AD` (`equipo1_id`),
  UNIQUE KEY `UNIQ_4E79750B1A602743` (`equipo2_id`),
  KEY `IDX_4E79750B6E1CF8A8` (`temporada_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=8 ;

我不希望它们成为唯一的密钥..

1 个答案:

答案 0 :(得分:1)

你的专栏加入了Equipo实体“ManyToOne”:

/**
 * @ORM\ManyToOne(targetEntity="Project\Bundle\AdminBundle\Entity\Equipo")
 * @ORM\JoinColumn(name="equipo1_id", referencedColumnName="id")
 */
 private $equipo1;

/**
 * @ORM\ManyToOne(targetEntity="Project\Bundle\AdminBundle\Entity\Equipo")
 * @ORM\JoinColumn(name="equipo2_id", referencedColumnName="id")
 */
private $equipo2;