отображение доктрины для самоссылающегося атрибута класса - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть форум, который может содержать подфорумы того же класса (форум). У меня проблемы с установлением этой связи.

приведенный ниже код - это то, что я пробовал до сих пор в своем классе на форуме

/**
 * @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 Ответ

2 голосов
/ 06 апреля 2019

Я полагаю, что вы ищете Само-ссылающееся сопоставление "один-ко-многим"

Поэтому измените свой $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;
...