我在多对多的映射方面遇到了一些问题,这些问题像多对一一样实现。我已经阅读了一个很好的解决方案Doctrine 2 and Many-to-many link table with an extra field但是通过一个帮助器在两个实体之间存在关系。我不得不重做这个解决方案:
/**
* @ORM\ManyToMany(targetEntity="Person", inversedBy="marriagesInverse", cascade={"persist"})
* @ORM\JoinTable(name="Marriages",
* joinColumns={@ORM\JoinColumn(name="person_1", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="person_2", referencedColumnName="id")}
* )
*/
private $marriages;
所以我得到了新人实体:
/**
* Person
*
* @ORM\Table()
* @ORM\Entity
*/
class Person
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity="Marriages", mappedBy="Person", cascade={"persist"})
*/
private $marriages;
}
婚姻实体:
/**
* Marriages
*
* @ORM\Table(name="Marriages")
* @ORM\Entity
*/
class Marriages
{
/**
* @ORM\Id()
* @ORM\ManyToOne(targetEntity="Person", inversedBy="marriages")
* @ORM\JoinColumn(name="person_1", referencedColumnName="id", nullable=false)
*/
protected $person_1;
/**
* @ORM\Id()
* @ORM\ManyToOne(targetEntity="Person", inversedBy="marriages")
* @ORM\JoinColumn(name="person_2", referencedColumnName="id", nullable=false)
*/
protected $person_2;
/**
* @var string
*
* @ORM\Column(name="marriage_date", type="text", nullable=true)
*/
private $marriage_date;
}
我如何通过婚姻以正确的方式将人物映射到人,以获得像ManyToMany这样的结果。我怎么能在树枝上得到这个额外的字段wedding_date?