实体引用相同的实体Symfony 3.3

时间:2018-03-23 16:11:15

标签: php symfony twig entity

(我是法国人,对不起,如果我犯了错误)。 您好,我试图将我的实体(称为" Evenement")链接到自身,因为0到X的evenement可以链接到evenement。 我有一个表单来添加一个新的evenement(它工作正常),并且在同一页面上,我想要另一个表单来链接我选择的当前事件的evenement。 所以在EvenementType中,我有两个构建器(我不知道它是否是一个很好的解决方案,因此我评论了第二个构建器,并且我使用此构建器创建了EvenementAssocieType.php)。

但是,当我检查一个evenement(一个复选框用于将evenement链接到另一个)时,没有任何附加内容,并且在探查器中,我提交的表单不会出现。

您可以在此处找到我的代码:https://openclassrooms.com/forum/sujet/symfony-evenements-lies-a-un-evenement

感谢您的帮助!

2 个答案:

答案 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查询时,我收到一条消息“没有最新消息”