Bonjour à tous,

Actuellement en train d'apprendre à utiliser Symfony (V5.2), j'ai un peu de mal à comprendre les relations avec Doctrine

j'ai actuellement 2 Entitées Projects et Clients avec une relation OneToMany (1 client peut avoir plusieurs projects et 1 projet ne peut avoir qu'un client)

j'aimerais que dans la fiche client je puisse recuperer tous les projets associés a ce client ,
jai essayé dans mon clientcontroller de faire un "client->getprojects()" mais à chaque fois ça me retourne un ArrayCollection avec aucun element à l'interieur:

voici mon client contoller:
/**

  • @Route("/{id}", name="clients_show", methods={"GET"})
    */
    public function show(Clients $client): Response
    {

    $projects = $client->getProjects();
    dump($projects);
    return $this->render('clients/show.html.twig', [
        'client' => $client,
    ]);

    }

    voici le dump:
    Doctrine\ORM\PersistentCollection {#742 ▼
    -snapshot: []
    -owner: App\Entity\Clients {#869 ▼
    -id: 2
    -name: "Cli2"
    -projects: Doctrine\ORM\PersistentCollection {#742}
    }
    -association: array:15 [ …15]
    -em: Doctrine\ORM\EntityManager {#679 …11}
    -backRefFieldName: "clients"
    -typeClass: Doctrine\ORM\Mapping\ClassMetadata {#866 …}
    -isDirty: false

    collection: Doctrine\Common\Collections\ArrayCollection {#889 ▼

    -elements: []
    }

    initialized: false

    }

je suis interressé par toutes infos et je vous remercie par avance du temps que vous prendrez à analiser ma requete

Cordialement Bapt

1 réponse


Bonjour,

Pour commencer, ta relation est certainement ManyToOne et non OneToMany.

Ensuite, vérifie que tu as bien des éléments dans ton tableau $clients->getProjects(). Si c'est le cas essaye d'afficher le contenu de ton tableau avec une boucle dans ton template Twig (je te renvoies à la doc de twig qui très bien faite: https://twig.symfony.com/).

A noter pour afficher un dump dans Twig, c'est :

{{ dump(var) }}

En espérant t'avoir aidé, si tu as d'autres questions n'hésite pas à les poser.