OneManyOne映射问题

时间:2015-04-02 07:18:04

标签: php mysql symfony orm doctrine-orm

我在多对多的映射方面遇到了一些问题,这些问题像多对一一样实现。我已经阅读了一个很好的解决方案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?

0 个答案:

没有答案