I have got some problems in mapping of Many-To-Many that implemented like one-many-one. I have read a great solution Doctrine 2 and Many-to-many link table with an extra field but there are relations between two entities through one helper. I had to rework this solution:
/**
* @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;
So I got new person entity:
/**
* 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;
}
And marriages entity:
/**
* 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;
}
How would I map Person to Person through marriages in a correct way to get results like ManyToMany. And how I can get this extra field marriage_date in twig?