Bonjour,

Je rencontre un petit problème avec mon code. Je débute sur Symfony (j'ai commencé y'a 3 semaines) pour mon stage et j'ai un peu de mal avec Doctrine.

Ce que je fais

Je créer une requête DQL afin d'afficher les informations d'une table avec un findAll() sur l'entité Time. Il y'a une relation ManyToOne entre l'entité User et Time.

Entité User :

    /**
     * @ORM\OneToMany(targetEntity=Time::class, mappedBy="user")
     */
    private $relation;

     /**
     * @return Collection|Time[]
     */
    public function getRelation(): Collection
    {
        return $this->relation;
    }

    public function addRelation(Time $relation): self
    {
        if (!$this->relation->contains($relation)) {
            $this->relation[] = $relation;
            $relation->setUser($this);
        }

        return $this;
    }

    public function removeRelation(Time $relation): self
    {
        if ($this->relation->removeElement($relation)) {

            if ($relation->getUser() === $this) {
                $relation->setUser(null);
            }
        }

        return $this;
    }

Entité Time :

    /**
     * @ORM\ManyToOne(targetEntity=User::class, inversedBy="relation")
     * @ORM\JoinColumn(nullable=true)
     * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
     */
    private $user;

        public function getUser(): ?User
    {
        return $this->user;
    }

    public function setUser(?User $user): self
    {
        $this->user = $user;

        return $this;
    }

TimeRepository :

    public function findAllById($id)
    {
        return $this->createQueryBuilder('t')
            ->select('t')
            ->innerjoin('t.user', 'u')
            ->where('t.user = :uid')
            ->setParameter('id', $id)
            ->getQuery()
            ->getResult()
        ;
    }

Controller :

    /**
    * @Route("/viewuser/{id}", name="user_view")
    */
    public function viewUser(TimeRepository $timeRepository, int $id)
    {
        $em = $this->getDoctrine()->getManager();
        //$heures = $em->getRepository(Time::class)->findAllById($id);

        dump($timeRepository->findAllById($id));
        die();
        /*return $this->render('admins/viewuser.html.twig', [
            'heure'=> $heures,
        ]);*/
    }

Ce que je veux

Seulement maintenant je veux récupérer les informations dans l'entité Time en fonction de l'user_id (clé étrangère) dans Time de la table User dont id est la clé primaire.

Ce que j'obtiens

Et pour l'instant je n'obtiens pas du tout ce que je veux mais plutôt un message d'erreur :

"Invalid parameter: token id is not defined in the query."

2 réponses


bidule
Réponse acceptée

Salut,

peut etre à ce niveau là

public function findAllById($id)
{
    return $this->createQueryBuilder('t')
        ->select('t')
        ->innerjoin('t.user', 'u')
        ->where('t.user = :id') // tu as mis uid
        ->setParameter('id', $id)
        ->getQuery()
        ->getResult()
    ;
}
Ocebb
Auteur

En effet merci ! J'ai bêtement fait une faute de frappe ! Mon dieu, je me sens nulle ! Merci beaucoup en tout cas !