自引用类属性的学说映射

时间:2019-04-06 13:13:24

标签: php symfony doctrine

我有一个论坛实体,其中可能包含子论坛,该子论坛属于同一类(论坛)。我在建立这种关系方面遇到麻烦。

下面的代码是我到目前为止在论坛课程中尝试过的代码

/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer", nullable=false)
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="IDENTITY")
 */
private $id;

/**
 * @var string
 *
 * @ORM\Column(name="name", type="string", length=255, nullable=false)
 */
private $name;

/**
 * @var string
 *
 * @ORM\Column(name="description", type="string", length=5000, nullable=false)
 */
private $description;

/**
 * @ORM\Column(type="string")
 *
 * @Assert\NotBlank(message="Please, upload the forum wallpaper as a PNG file.")
 * @Assert\File(mimeTypes={ "image/png" })
 */
private $wallpaper;

/**
 * @var \DateTime
 *
 * @ORM\Column(name="added_date", type="datetime", nullable=false)
 */
private $addedDate;


/**
 * @var array
 *
 * @ORM\ManyToMany(targetEntity="AppBundle\Entity\User", cascade={"remove"})
 */
private $moderators;

/**
 * @var Forum[]
 * @ORM\OneToMany(targetEntity="Forum", mappedBy="id", cascade={"all"}, orphanRemoval=true)
 */
private $subForums;


/**
 * @var \AppBundle\Entity\User
 *
 * @ORM\ManyToOne(targetEntity="AppBundle\Entity\User")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="user_id", referencedColumnName="id")
 * })
 */
private $userId;

更新数据库方案后出现的问题是,论坛和子论坛中没有任何表链接,所以我很困惑如何稍后再将子论坛添加到现有论坛中。任何帮助都非常有用

enter image description here

1 个答案:

答案 0 :(得分:2)

我相信您正在寻找的是One-To-Many self-referencing mapping

因此,像这样更改您的 * * * * * * * * * ....

$subForums

并添加/** * @var Forum[] * @ORM\OneToMany(targetEntity="Forum", mappedBy="parentForum", cascade={"all"}, orphanRemoval=true) */ private $subForums; ,如下所示:

$parentForum