(我是法国人,对不起,如果我犯了错误)。 您好,我试图将我的实体(称为" Evenement")链接到自身,因为0到X的evenement可以链接到evenement。 我有一个表单来添加一个新的evenement(它工作正常),并且在同一页面上,我想要另一个表单来链接我选择的当前事件的evenement。 所以在EvenementType中,我有两个构建器(我不知道它是否是一个很好的解决方案,因此我评论了第二个构建器,并且我使用此构建器创建了EvenementAssocieType.php)。
但是,当我检查一个evenement(一个复选框用于将evenement链接到另一个)时,没有任何附加内容,并且在探查器中,我提交的表单不会出现。
您可以在此处找到我的代码:https://openclassrooms.com/forum/sujet/symfony-evenements-lies-a-un-evenement
感谢您的帮助!
答案 0 :(得分:0)
您必须在实体中自我引用多对多关系。以下是doctrine website上的示例,您可以根据自己的代码进行调整:
<?php
/** @Entity */
class User
{
// ...
/**
* Many Users have Many Users.
* @ManyToMany(targetEntity="User", mappedBy="myFriends")
*/
private $friendsWithMe;
/**
* Many Users have many Users.
* @ManyToMany(targetEntity="User", inversedBy="friendsWithMe")
* @JoinTable(name="friends",
* joinColumns={@JoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="friend_user_id", referencedColumnName="id")}
* )
*/
private $myFriends;
public function __construct() {
$this->friendsWithMe = new \Doctrine\Common\Collections\ArrayCollection();
$this->myFriends = new \Doctrine\Common\Collections\ArrayCollection();
}
// ...
}
答案 1 :(得分:0)
感谢您的回答,但我的代码有问题,但我不知道它是什么......
/**
* ORM\@ManyToMany(targetEntity="KeolisBundle\Entity\Evenement", mappedBy="myEvents")
* @ORM\JoinColumn(nullable=true)
*/
private $evenements;
/**
* ORM\@ManyToMany(targetEntity="KeolisBundle\Entity\Evenement", inversedBy="evenements", cascade={"persist"})
* ORM\@JoinTable(name="evenement_evenement",
* joinColumns={@JoinColumn(name="evenement_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="event_assoc_id", referencedColumnName="id")}
* )
*/
private $myEvents;
当我生成我的实体时,没有变化(我的构造函数中有myEvents)。当我转储SQL查询时,我收到一条消息“没有最新消息”