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."