实体引用相同的实体 Symfony 3.3
Entity references same entity Symfony 3.3
(我是法国人,如有错误请见谅)。
您好,我正在尝试 link 我的实体(称为 "Evenement")自身,因为 0 到 X 晚上可以 link 编辑到晚上。
我有一个表格来添加一个新的晚会(它工作正常)并且在同一页面上,我想有另一种形式到 link 我为当前事件选择的晚会。
所以在 EvenementType 中,我有两个构建器(我不知道这是否是一个好的解决方案,所以我评论了第二个构建器,我用这个构建器制作了 EvenementAssocieType.php)。
但是当我检查一个晚上(一个复选框用于 link 一个晚上到另一个)时,没有附加任何内容,并且在分析器中,我提交的表单没有出现。
你可以在这里找到我的代码:https://openclassrooms.com/forum/sujet/symfony-evenements-lies-a-un-evenement
感谢您的帮助!
你必须在你的实体中建立一个自我引用的多对多关系。这是在 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();
}
// ...
}
感谢您的回答,但是我的代码有问题,但我不知道是什么...
/**
* 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 查询时,我收到一条消息 "nothing up to date"
(我是法国人,如有错误请见谅)。 您好,我正在尝试 link 我的实体(称为 "Evenement")自身,因为 0 到 X 晚上可以 link 编辑到晚上。 我有一个表格来添加一个新的晚会(它工作正常)并且在同一页面上,我想有另一种形式到 link 我为当前事件选择的晚会。 所以在 EvenementType 中,我有两个构建器(我不知道这是否是一个好的解决方案,所以我评论了第二个构建器,我用这个构建器制作了 EvenementAssocieType.php)。
但是当我检查一个晚上(一个复选框用于 link 一个晚上到另一个)时,没有附加任何内容,并且在分析器中,我提交的表单没有出现。
你可以在这里找到我的代码:https://openclassrooms.com/forum/sujet/symfony-evenements-lies-a-un-evenement
感谢您的帮助!
你必须在你的实体中建立一个自我引用的多对多关系。这是在 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();
}
// ...
}
感谢您的回答,但是我的代码有问题,但我不知道是什么...
/**
* 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 查询时,我收到一条消息 "nothing up to date"