Bonjour, j'ai pu mettre sur pied un système de commentaire des articles, mais j'ai un nouveau souci car j'aimerais que l'on puisse commenter les commentaires des autres utilisateurs. Autrement dit faire une imbrication des commentaires. Si quelqu'un pourrais avoir une idée de comment faire et si possible me donné un lien tuto qui me permettrais de réaliser cette activité

J'ai une relation OneToMany entre Blogpost et Comment.

bien à vous

Entity Comment

<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use App\Repository\CommentRepository;

#[ORM\Entity(repositoryClass: CommentRepository::class)]
class Comment
{
    #[ORM\Id]
    #[ORM\GeneratedValue]
    #[ORM\Column(type: 'integer')]
    private $id;

    #[ORM\Column(type: 'string', length: 25)]
    private $name;

    #[ORM\Column(type: 'string', length: 255)]
    private $email;

    #[ORM\Column(type: 'string', length: 255, nullable: true)]
    private $website;

    #[ORM\Column(type: 'text')]
    private $content;

    #[ORM\Column(type: 'datetime')]
    private $createdAt;

    #[ORM\ManyToOne(targetEntity: Blogpost::class, inversedBy: 'comments')]
    #[ORM\JoinColumn(nullable: false)]
    private $blogpost;

    #[ORM\Column(type: 'boolean')]
    private $isVerified = false;

    #[ORM\Column(type: 'boolean')]
    private $rgpd;

    public function getId(): ?int
    {
        return $this->id;
    }

    ...
}

Ce que je veux

Mettre sur pied un système de commentaires imbriqués

1 réponse


Le principe va être le suivant :

  • Rajouter un champ "parent" qui va contenir l'ID du commentaire sur lequel imbriquer tes autres commentaires. S'il est null, alors c'est qu'il est à la racine de tes commentaires.
  • Faire une récupération récursive des commentaires. Attention au problème N+1 :)

Tu vas donc devoir faire une One-To-Many sur tes commentaires pour pouvoir faire cette fonctionnalité.

Petit truc à réfléchir dans un second temps : Veux-tu limiter le nombre de commentaires imbriqués ?