首页 > 解决方案 > 自引用类属性的学说映射

问题描述

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

下面的代码是我迄今为止在我的论坛课程中尝试过的

/**
 * @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;

更新数据库方案后的问题我没有最终得到任何表格链接论坛和子论坛,所以我很困惑如何在以后将子论坛添加到现有论坛。任何帮助都非常感谢

在此处输入图像描述

标签: phpsymfonydoctrine

解决方案


我相信您正在寻找的是一对多自引用映射

所以改变你的$subForums喜欢:

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

并添加$parentForum,如下所示:

/**
 * @ManyToOne(targetEntity="Forum", inversedBy="subForums")
 * @JoinColumn(name="parent_id", referencedColumnName="id")
 */
private $parentForum;

推荐阅读