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.
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,
]);*/
}
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.
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."
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()
;
}
En effet merci ! J'ai bêtement fait une faute de frappe ! Mon dieu, je me sens nulle ! Merci beaucoup en tout cas !