<?phpnamespace App\Entity;use App\Repository\CommentRepository;use Doctrine\Common\Collections\ArrayCollection;use Doctrine\Common\Collections\Collection;use Doctrine\DBAL\Types\Types;use App\Entity\Traits\Timestampable;use Doctrine\ORM\Mapping as ORM;#[ORM\HasLifecycleCallbacks]#[ORM\Entity(repositoryClass: CommentRepository::class)]class Comment{ use Timestampable; #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column] private ?int $id = null; #[ORM\Column(length: 255)] private ?string $name = null; #[ORM\Column(length: 255, nullable: true)] private ?string $email = null; #[ORM\Column(type: Types::TEXT)] private ?string $content = null; #[ORM\ManyToOne(inversedBy: 'comments')] #[ORM\JoinColumn(nullable: false)] private ?Blog $blog = null; #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'replies')] private ?self $parent = null; #[ORM\OneToMany(mappedBy: 'parent', targetEntity: self::class, orphanRemoval: true)] private Collection $replies; public function __construct() { $this->replies = new ArrayCollection(); } public function getId(): ?int { return $this->id; } public function getName(): ?string { return $this->name; } public function setName(string $name): static { $this->name = $name; return $this; } public function getEmail(): ?string { return $this->email; } public function setEmail(?string $email): static { $this->email = $email; return $this; } public function getContent(): ?string { return $this->content; } public function setContent(string $content): static { $this->content = $content; return $this; } public function getBlog(): ?Blog { return $this->blog; } public function setBlog(?Blog $blog): static { $this->blog = $blog; return $this; } public function getParent(): ?self { return $this->parent; } public function setParent(?self $parent): static { $this->parent = $parent; return $this; } /** * @return Collection<int, self> */ public function getReplies(): Collection { return $this->replies; } public function addReply(self $reply): static { if (!$this->replies->contains($reply)) { $this->replies->add($reply); $reply->setParent($this); } return $this; } public function removeReply(self $reply): static { if ($this->replies->removeElement($reply)) { // set the owning side to null (unless already changed) if ($reply->getParent() === $this) { $reply->setParent(null); } } return $this; }}