Bonjour la team !

Besoin d'aide svp

j'ai deux entité Pp.php et Course.php qui ont une relation respective OneToMany et ManyToOne.
Ces deux entité fait refference a un participant et son parcour et je voudrais recuper dans ma base un participant et son parcour(les trois dernière sauvegarde.

relation entity: Pp.php (participant)

    /**
     * @ORM\OneToMany(targetEntity=Course::class, mappedBy="pps", orphanRemoval=true)
     */
    private $courses;

relation entity: Course.php

    /**
     * @ORM\ManyToOne(targetEntity=Pp::class, inversedBy="courses")
     * @ORM\JoinColumn(nullable=false)
     */
    private $pps;

la fontion qui recupère les 3 dernières participant (pp) et leur parcours (course) dans PpRepository.php

    /**
     * Récupère les 3 dernières participants avec leurs parcours
     * @return Pp[]
     */
    public function findLast()
    {
        return $this->createQueryBuilder('p')
            ->select('p', 'c')
            ->join('p.courses', 'c')
            ->orderBy('c.id', 'DESC')
            ->setMaxResults(3)
            ->getQuery()
            ->getResult()
        ;
    }

Ce que je veux

je veux pouvoir afficher dans un tableau les trois dernières sauvegade d'un participant et son parcour.

Ce que j'obtiens

Lorsque je charge ma page j'obiens cette erreur

An exception occurred while executing a query: SQLSTATE[42S22]: Column not found: 1054 Unknown column 't30.id' in 'on clause'

version de symfony 5.3
php: 7.4.25

Merci pour vos réponse!

1 réponse


Bonjour,

Je ne suis pas sur à 100% mais je crois qu'il y a un truc louche lorsque l'on utilise la méthode createQueryBuilder... il ne faut pas chainer directement le "getResult()", je crois que je me suis déjà fait avoir.

Dans cet extrait de la doc, la requête est stockée dans une variable puis executée postérieurement.

Si ça ne fonctionne toujours pas, essai de récupérer la requête générée puis passe là avec un outil comme phpMyAdmin, tu devrais avoir logiquement la même erreur mais cela pourrait t'aider à trouver le bon paramétrage pour passer ta requête via le framework.